@lumx/react 3.20.1-alpha.12 → 3.20.1-alpha.14
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/index.js +236 -0
- package/_internal/index.js.map +1 -0
- package/index.d.ts +1 -1
- package/index.js +14440 -65
- package/index.js.map +1 -1
- package/package.json +11 -3
- package/src/components/alert-dialog/AlertDialog.stories.tsx +127 -0
- package/src/components/alert-dialog/AlertDialog.test.tsx +34 -0
- package/src/components/alert-dialog/AlertDialog.tsx +189 -0
- package/src/components/alert-dialog/index.ts +1 -0
- package/src/components/autocomplete/Autocomplete.stories.tsx +75 -0
- package/src/components/autocomplete/Autocomplete.test.tsx +99 -0
- package/src/components/autocomplete/Autocomplete.tsx +294 -0
- package/src/components/autocomplete/AutocompleteMultiple.stories.tsx +167 -0
- package/src/components/autocomplete/AutocompleteMultiple.test.tsx +61 -0
- package/src/components/autocomplete/AutocompleteMultiple.tsx +156 -0
- package/src/components/autocomplete/__mockData__/index.ts +39 -0
- package/src/components/autocomplete/index.ts +2 -0
- package/src/components/avatar/Avatar.stories.tsx +119 -0
- package/src/components/avatar/Avatar.test.tsx +32 -0
- package/src/components/avatar/Avatar.tsx +114 -0
- package/src/components/avatar/index.ts +1 -0
- package/src/components/badge/Badge.stories.tsx +69 -0
- package/src/components/badge/Badge.test.tsx +45 -0
- package/src/components/badge/Badge.tsx +58 -0
- package/src/components/badge/BadgeWrapper.stories.tsx +75 -0
- package/src/components/badge/BadgeWrapper.test.tsx +47 -0
- package/src/components/badge/BadgeWrapper.tsx +37 -0
- package/src/components/badge/index.ts +2 -0
- package/src/components/button/Button.stories.tsx +355 -0
- package/src/components/button/Button.test.tsx +125 -0
- package/src/components/button/Button.tsx +101 -0
- package/src/components/button/ButtonGroup.stories.tsx +52 -0
- package/src/components/button/ButtonGroup.test.tsx +41 -0
- package/src/components/button/ButtonGroup.tsx +50 -0
- package/src/components/button/ButtonRoot.tsx +163 -0
- package/src/components/button/IconButton.stories.tsx +52 -0
- package/src/components/button/IconButton.test.tsx +66 -0
- package/src/components/button/IconButton.tsx +91 -0
- package/src/components/button/index.ts +4 -0
- package/src/components/checkbox/Checkbox.stories.tsx +64 -0
- package/src/components/checkbox/Checkbox.test.tsx +154 -0
- package/src/components/checkbox/Checkbox.tsx +164 -0
- package/src/components/checkbox/index.ts +1 -0
- package/src/components/chip/Chip.stories.tsx +164 -0
- package/src/components/chip/Chip.test.tsx +243 -0
- package/src/components/chip/Chip.tsx +168 -0
- package/src/components/chip/ChipGroup.stories.tsx +47 -0
- package/src/components/chip/ChipGroup.test.tsx +37 -0
- package/src/components/chip/ChipGroup.tsx +60 -0
- package/src/components/chip/index.ts +2 -0
- package/src/components/comment-block/CommentBlock.stories.tsx +91 -0
- package/src/components/comment-block/CommentBlock.test.tsx +28 -0
- package/src/components/comment-block/CommentBlock.tsx +172 -0
- package/src/components/comment-block/index.ts +1 -0
- package/src/components/date-picker/DatePicker.stories.tsx +118 -0
- package/src/components/date-picker/DatePicker.test.tsx +34 -0
- package/src/components/date-picker/DatePicker.tsx +52 -0
- package/src/components/date-picker/DatePickerControlled.test.tsx +91 -0
- package/src/components/date-picker/DatePickerControlled.tsx +259 -0
- package/src/components/date-picker/DatePickerField.stories.tsx +100 -0
- package/src/components/date-picker/DatePickerField.test.tsx +70 -0
- package/src/components/date-picker/DatePickerField.tsx +135 -0
- package/src/components/date-picker/constants.ts +11 -0
- package/src/components/date-picker/index.ts +4 -0
- package/src/components/date-picker/types.ts +28 -0
- package/src/components/dialog/Dialog.stories.tsx +318 -0
- package/src/components/dialog/Dialog.test.tsx +97 -0
- package/src/components/dialog/Dialog.tsx +288 -0
- package/src/components/dialog/index.ts +1 -0
- package/src/components/divider/Divider.test.tsx +51 -0
- package/src/components/divider/Divider.tsx +50 -0
- package/src/components/divider/index.ts +1 -0
- package/src/components/drag-handle/DragHandle.test.tsx +36 -0
- package/src/components/drag-handle/DragHandle.tsx +51 -0
- package/src/components/drag-handle/index.ts +1 -0
- package/src/components/dropdown/Dropdown.stories.tsx +31 -0
- package/src/components/dropdown/Dropdown.test.tsx +66 -0
- package/src/components/dropdown/Dropdown.tsx +186 -0
- package/src/components/dropdown/index.ts +1 -0
- package/src/components/expansion-panel/ExpansionPanel.stories.tsx +91 -0
- package/src/components/expansion-panel/ExpansionPanel.test.tsx +185 -0
- package/src/components/expansion-panel/ExpansionPanel.tsx +195 -0
- package/src/components/expansion-panel/index.ts +1 -0
- package/src/components/flag/Flag.stories.tsx +48 -0
- package/src/components/flag/Flag.test.tsx +62 -0
- package/src/components/flag/Flag.tsx +52 -0
- package/src/components/flag/index.ts +1 -0
- package/src/components/flex-box/FlexBox.stories.tsx +156 -0
- package/src/components/flex-box/FlexBox.test.tsx +24 -0
- package/src/components/flex-box/FlexBox.tsx +100 -0
- package/src/components/flex-box/index.ts +1 -0
- package/src/components/generic-block/GenericBlock.stories.jsx +128 -0
- package/src/components/generic-block/GenericBlock.test.tsx +156 -0
- package/src/components/generic-block/GenericBlock.tsx +225 -0
- package/src/components/generic-block/constants.ts +9 -0
- package/src/components/generic-block/index.ts +2 -0
- package/src/components/grid/Grid.tsx +83 -0
- package/src/components/grid/GridItem.tsx +55 -0
- package/src/components/grid/index.ts +2 -0
- package/src/components/grid-column/GridColumn.stories.tsx +45 -0
- package/src/components/grid-column/GridColumn.test.jsx +56 -0
- package/src/components/grid-column/GridColumn.tsx +83 -0
- package/src/components/grid-column/index.ts +1 -0
- package/src/components/heading/Heading.stories.tsx +69 -0
- package/src/components/heading/Heading.test.tsx +82 -0
- package/src/components/heading/Heading.tsx +65 -0
- package/src/components/heading/HeadingLevelProvider.tsx +30 -0
- package/src/components/heading/constants.ts +16 -0
- package/src/components/heading/context.tsx +13 -0
- package/src/components/heading/index.ts +3 -0
- package/src/components/heading/useHeadingLevel.tsx +8 -0
- package/src/components/icon/Icon.stories.tsx +73 -0
- package/src/components/icon/Icon.test.tsx +125 -0
- package/src/components/icon/Icon.tsx +133 -0
- package/src/components/icon/index.ts +1 -0
- package/src/components/image-block/ImageBlock.stories.tsx +117 -0
- package/src/components/image-block/ImageBlock.test.tsx +58 -0
- package/src/components/image-block/ImageBlock.tsx +142 -0
- package/src/components/image-block/ImageCaption.tsx +115 -0
- package/src/components/image-block/index.ts +1 -0
- package/src/components/image-lightbox/ImageLightbox.stories.tsx +160 -0
- package/src/components/image-lightbox/ImageLightbox.test.tsx +254 -0
- package/src/components/image-lightbox/ImageLightbox.tsx +90 -0
- package/src/components/image-lightbox/constants.ts +11 -0
- package/src/components/image-lightbox/index.ts +2 -0
- package/src/components/image-lightbox/internal/ImageSlide.tsx +107 -0
- package/src/components/image-lightbox/internal/ImageSlideshow.tsx +164 -0
- package/src/components/image-lightbox/internal/useAnimateScroll.ts +55 -0
- package/src/components/image-lightbox/internal/usePointerZoom.ts +148 -0
- package/src/components/image-lightbox/types.ts +48 -0
- package/src/components/image-lightbox/useImageLightbox.tsx +141 -0
- package/src/components/inline-list/InlineList.stories.tsx +77 -0
- package/src/components/inline-list/InlineList.test.tsx +52 -0
- package/src/components/inline-list/InlineList.tsx +96 -0
- package/src/components/inline-list/index.ts +1 -0
- package/src/components/input-helper/InputHelper.stories.tsx +35 -0
- package/src/components/input-helper/InputHelper.test.tsx +55 -0
- package/src/components/input-helper/InputHelper.tsx +65 -0
- package/src/components/input-helper/constants.ts +11 -0
- package/src/components/input-helper/index.ts +1 -0
- package/src/components/input-label/InputLabel.stories.tsx +45 -0
- package/src/components/input-label/InputLabel.test.tsx +59 -0
- package/src/components/input-label/InputLabel.tsx +69 -0
- package/src/components/input-label/index.ts +1 -0
- package/src/components/lightbox/Lightbox.stories.tsx +101 -0
- package/src/components/lightbox/Lightbox.test.tsx +53 -0
- package/src/components/lightbox/Lightbox.tsx +180 -0
- package/src/components/lightbox/index.ts +1 -0
- package/src/components/link/Link.stories.tsx +195 -0
- package/src/components/link/Link.test.tsx +127 -0
- package/src/components/link/Link.tsx +106 -0
- package/src/components/link/index.ts +1 -0
- package/src/components/link-preview/LinkPreview.stories.tsx +61 -0
- package/src/components/link-preview/LinkPreview.test.tsx +105 -0
- package/src/components/link-preview/LinkPreview.tsx +158 -0
- package/src/components/link-preview/index.ts +1 -0
- package/src/components/list/List.stories.tsx +116 -0
- package/src/components/list/List.test.tsx +18 -0
- package/src/components/list/List.tsx +104 -0
- package/src/components/list/ListDivider.stories.tsx +12 -0
- package/src/components/list/ListDivider.test.tsx +22 -0
- package/src/components/list/ListDivider.tsx +35 -0
- package/src/components/list/ListItem.stories.tsx +66 -0
- package/src/components/list/ListItem.test.tsx +93 -0
- package/src/components/list/ListItem.tsx +157 -0
- package/src/components/list/ListSubheader.stories.tsx +11 -0
- package/src/components/list/ListSubheader.test.tsx +21 -0
- package/src/components/list/ListSubheader.tsx +44 -0
- package/src/components/list/index.ts +4 -0
- package/src/components/list/useInteractiveList.tsx +202 -0
- package/src/components/message/Message.stories.tsx +72 -0
- package/src/components/message/Message.test.tsx +76 -0
- package/src/components/message/Message.tsx +100 -0
- package/src/components/message/index.ts +1 -0
- package/src/components/mosaic/Mosaic.stories.tsx +89 -0
- package/src/components/mosaic/Mosaic.test.tsx +77 -0
- package/src/components/mosaic/Mosaic.tsx +98 -0
- package/src/components/mosaic/index.ts +1 -0
- package/src/components/navigation/Navigation.stories.tsx +234 -0
- package/src/components/navigation/Navigation.test.tsx +65 -0
- package/src/components/navigation/Navigation.tsx +79 -0
- package/src/components/navigation/NavigationItem.test.tsx +35 -0
- package/src/components/navigation/NavigationItem.tsx +82 -0
- package/src/components/navigation/NavigationSection.test.tsx +137 -0
- package/src/components/navigation/NavigationSection.tsx +108 -0
- package/src/components/navigation/context.tsx +7 -0
- package/src/components/navigation/index.ts +1 -0
- package/src/components/notification/Notification.test.tsx +94 -0
- package/src/components/notification/Notification.tsx +138 -0
- package/src/components/notification/Notifications.stories.tsx +92 -0
- package/src/components/notification/constants.ts +28 -0
- package/src/components/notification/index.ts +1 -0
- package/src/components/popover/Popover.stories.tsx +264 -0
- package/src/components/popover/Popover.test.tsx +62 -0
- package/src/components/popover/Popover.tsx +201 -0
- package/src/components/popover/constants.ts +62 -0
- package/src/components/popover/index.ts +3 -0
- package/src/components/popover/usePopoverStyle.tsx +184 -0
- package/src/components/popover/useRestoreFocusOnClose.tsx +47 -0
- package/src/components/popover-dialog/PopoverDialog.stories.tsx +64 -0
- package/src/components/popover-dialog/PopoverDialog.test.tsx +139 -0
- package/src/components/popover-dialog/PopoverDialog.tsx +74 -0
- package/src/components/popover-dialog/index.tsx +1 -0
- package/src/components/post-block/PostBlock.test.tsx +27 -0
- package/src/components/post-block/PostBlock.tsx +122 -0
- package/src/components/post-block/index.ts +1 -0
- package/src/components/progress/Progress.tsx +68 -0
- package/src/components/progress/ProgressCircular.stories.tsx +43 -0
- package/src/components/progress/ProgressCircular.test.tsx +46 -0
- package/src/components/progress/ProgressCircular.tsx +82 -0
- package/src/components/progress/ProgressLinear.stories.tsx +12 -0
- package/src/components/progress/ProgressLinear.test.tsx +30 -0
- package/src/components/progress/ProgressLinear.tsx +50 -0
- package/src/components/progress/index.ts +3 -0
- package/src/components/progress-tracker/ProgressTracker.stories.tsx +145 -0
- package/src/components/progress-tracker/ProgressTracker.test.tsx +42 -0
- package/src/components/progress-tracker/ProgressTracker.tsx +87 -0
- package/src/components/progress-tracker/ProgressTrackerProvider.test.tsx +65 -0
- package/src/components/progress-tracker/ProgressTrackerProvider.tsx +67 -0
- package/src/components/progress-tracker/ProgressTrackerStep.test.tsx +36 -0
- package/src/components/progress-tracker/ProgressTrackerStep.tsx +159 -0
- package/src/components/progress-tracker/ProgressTrackerStepPanel.test.tsx +34 -0
- package/src/components/progress-tracker/ProgressTrackerStepPanel.tsx +67 -0
- package/src/components/progress-tracker/index.ts +4 -0
- package/src/components/radio-button/RadioButton.stories.tsx +71 -0
- package/src/components/radio-button/RadioButton.test.tsx +143 -0
- package/src/components/radio-button/RadioButton.tsx +143 -0
- package/src/components/radio-button/RadioGroup.stories.tsx +39 -0
- package/src/components/radio-button/RadioGroup.test.tsx +29 -0
- package/src/components/radio-button/RadioGroup.tsx +44 -0
- package/src/components/radio-button/index.ts +2 -0
- package/src/components/select/Select.stories.tsx +385 -0
- package/src/components/select/Select.test.tsx +199 -0
- package/src/components/select/Select.tsx +199 -0
- package/src/components/select/SelectMultiple.stories.tsx +315 -0
- package/src/components/select/SelectMultiple.test.tsx +213 -0
- package/src/components/select/SelectMultiple.tsx +206 -0
- package/src/components/select/WithSelectContext.tsx +147 -0
- package/src/components/select/constants.ts +55 -0
- package/src/components/select/index.ts +2 -0
- package/src/components/side-navigation/SideNavigation.stories.tsx +191 -0
- package/src/components/side-navigation/SideNavigation.test.tsx +37 -0
- package/src/components/side-navigation/SideNavigation.tsx +52 -0
- package/src/components/side-navigation/SideNavigationItem.stories.tsx +133 -0
- package/src/components/side-navigation/SideNavigationItem.test.tsx +136 -0
- package/src/components/side-navigation/SideNavigationItem.tsx +165 -0
- package/src/components/side-navigation/index.ts +2 -0
- package/src/components/skeleton/SkeletonCircle.stories.tsx +41 -0
- package/src/components/skeleton/SkeletonCircle.test.tsx +27 -0
- package/src/components/skeleton/SkeletonCircle.tsx +52 -0
- package/src/components/skeleton/SkeletonRectangle.stories.tsx +82 -0
- package/src/components/skeleton/SkeletonRectangle.test.tsx +27 -0
- package/src/components/skeleton/SkeletonRectangle.tsx +88 -0
- package/src/components/skeleton/SkeletonTypography.stories.tsx +19 -0
- package/src/components/skeleton/SkeletonTypography.test.tsx +27 -0
- package/src/components/skeleton/SkeletonTypography.tsx +59 -0
- package/src/components/skeleton/index.ts +3 -0
- package/src/components/slider/Slider.stories.tsx +45 -0
- package/src/components/slider/Slider.test.tsx +29 -0
- package/src/components/slider/Slider.tsx +299 -0
- package/src/components/slider/index.ts +2 -0
- package/src/components/slideshow/Slides.tsx +130 -0
- package/src/components/slideshow/Slideshow.stories.tsx +179 -0
- package/src/components/slideshow/Slideshow.test.tsx +35 -0
- package/src/components/slideshow/Slideshow.tsx +173 -0
- package/src/components/slideshow/SlideshowControls.stories.tsx +100 -0
- package/src/components/slideshow/SlideshowControls.tsx +243 -0
- package/src/components/slideshow/SlideshowItem.tsx +44 -0
- package/src/components/slideshow/SlideshowItemGroup.tsx +60 -0
- package/src/components/slideshow/constants.ts +24 -0
- package/src/components/slideshow/index.ts +4 -0
- package/src/components/slideshow/useKeyNavigate.ts +28 -0
- package/src/components/slideshow/usePaginationVisibleRange.ts +37 -0
- package/src/components/slideshow/useSlideFocusManagement.tsx +92 -0
- package/src/components/slideshow/useSwipeNavigate.ts +18 -0
- package/src/components/switch/Switch.stories.tsx +49 -0
- package/src/components/switch/Switch.test.tsx +144 -0
- package/src/components/switch/Switch.tsx +145 -0
- package/src/components/switch/index.ts +1 -0
- package/src/components/table/Table.test.tsx +29 -0
- package/src/components/table/Table.tsx +59 -0
- package/src/components/table/TableBody.test.tsx +30 -0
- package/src/components/table/TableBody.tsx +42 -0
- package/src/components/table/TableCell.test.tsx +72 -0
- package/src/components/table/TableCell.tsx +130 -0
- package/src/components/table/TableHeader.test.tsx +30 -0
- package/src/components/table/TableHeader.tsx +48 -0
- package/src/components/table/TableRow.test.tsx +40 -0
- package/src/components/table/TableRow.tsx +71 -0
- package/src/components/table/index.ts +5 -0
- package/src/components/tabs/Tab.test.tsx +50 -0
- package/src/components/tabs/Tab.tsx +133 -0
- package/src/components/tabs/TabList.test.tsx +49 -0
- package/src/components/tabs/TabList.tsx +94 -0
- package/src/components/tabs/TabPanel.test.tsx +37 -0
- package/src/components/tabs/TabPanel.tsx +67 -0
- package/src/components/tabs/TabProvider.test.tsx +161 -0
- package/src/components/tabs/TabProvider.tsx +67 -0
- package/src/components/tabs/Tabs.stories.tsx +170 -0
- package/src/components/tabs/index.ts +4 -0
- package/src/components/tabs/state.ts +114 -0
- package/src/components/tabs/test-utils.ts +39 -0
- package/src/components/text/Text.stories.tsx +177 -0
- package/src/components/text/Text.test.tsx +92 -0
- package/src/components/text/Text.tsx +139 -0
- package/src/components/text/index.ts +1 -0
- package/src/components/text-field/TextField.stories.tsx +180 -0
- package/src/components/text-field/TextField.test.tsx +298 -0
- package/src/components/text-field/TextField.tsx +493 -0
- package/src/components/text-field/index.ts +1 -0
- package/src/components/thumbnail/Thumbnail.stories.tsx +448 -0
- package/src/components/thumbnail/Thumbnail.test.tsx +88 -0
- package/src/components/thumbnail/Thumbnail.tsx +248 -0
- package/src/components/thumbnail/index.ts +3 -0
- package/src/components/thumbnail/types.ts +48 -0
- package/src/components/thumbnail/useFocusPointStyle.test.ts +92 -0
- package/src/components/thumbnail/useFocusPointStyle.tsx +107 -0
- package/src/components/thumbnail/useImageLoad.ts +40 -0
- package/src/components/toolbar/Toolbar.tsx +68 -0
- package/src/components/toolbar/index.ts +1 -0
- package/src/components/tooltip/Tooltip.stories.tsx +118 -0
- package/src/components/tooltip/Tooltip.test.tsx +417 -0
- package/src/components/tooltip/Tooltip.tsx +165 -0
- package/src/components/tooltip/constants.ts +8 -0
- package/src/components/tooltip/context.tsx +17 -0
- package/src/components/tooltip/index.ts +1 -0
- package/src/components/tooltip/useInjectTooltipRef.tsx +55 -0
- package/src/components/tooltip/useTooltipOpen.tsx +143 -0
- package/src/components/uploader/Uploader.stories.tsx +109 -0
- package/src/components/uploader/Uploader.test.tsx +146 -0
- package/src/components/uploader/Uploader.tsx +177 -0
- package/src/components/uploader/index.ts +1 -0
- package/src/components/user-block/UserBlock.stories.tsx +133 -0
- package/src/components/user-block/UserBlock.test.tsx +106 -0
- package/src/components/user-block/UserBlock.tsx +193 -0
- package/src/components/user-block/index.ts +1 -0
- package/src/constants.ts +27 -0
- package/src/hooks/useBooleanState.tsx +13 -0
- package/src/hooks/useCallbackOnEscape.ts +34 -0
- package/src/hooks/useChipGroupNavigation.tsx +75 -0
- package/src/hooks/useClickAway.tsx +48 -0
- package/src/hooks/useDisableBodyScroll.ts +28 -0
- package/src/hooks/useEventCallback.tsx +17 -0
- package/src/hooks/useFocus.tsx +21 -0
- package/src/hooks/useFocusTrap.ts +93 -0
- package/src/hooks/useFocusWithin.ts +33 -0
- package/src/hooks/useId.test.tsx +22 -0
- package/src/hooks/useId.ts +15 -0
- package/src/hooks/useImageSize.ts +17 -0
- package/src/hooks/useInfiniteScroll.tsx +60 -0
- package/src/hooks/useIntersectionObserver.tsx +43 -0
- package/src/hooks/useInterval.tsx +31 -0
- package/src/hooks/useKeyboardListNavigation.tsx +204 -0
- package/src/hooks/useListenFocus.tsx +26 -0
- package/src/hooks/useOverflowTooltipLabel.tsx +32 -0
- package/src/hooks/usePopper.ts +12 -0
- package/src/hooks/usePreviousValue.ts +12 -0
- package/src/hooks/useRovingTabIndex.tsx +90 -0
- package/src/hooks/useSizeOnWindowResize.ts +30 -0
- package/src/hooks/useSlideshowControls.ts +246 -0
- package/src/hooks/useStopPropagation.ts +21 -0
- package/src/hooks/useTransitionVisibility.ts +48 -0
- package/src/index.ts +63 -0
- package/src/stories/controls/color.ts +7 -0
- package/src/stories/controls/element.ts +6 -0
- package/src/stories/controls/focusPoint.ts +1 -0
- package/src/stories/controls/icons.ts +126 -0
- package/src/stories/controls/image.ts +84 -0
- package/src/stories/controls/selectArgType.ts +8 -0
- package/src/stories/controls/theme.ts +3 -0
- package/src/stories/controls/typography.ts +5 -0
- package/src/stories/controls/withUndefined.ts +1 -0
- package/src/stories/decorators/withChromaticForceScreenSize.tsx +7 -0
- package/src/stories/decorators/withCombinations.tsx +132 -0
- package/src/stories/decorators/withNestedProps.tsx +22 -0
- package/src/stories/decorators/withResizableBox.tsx +21 -0
- package/src/stories/decorators/withThemedBackground.tsx +16 -0
- package/src/stories/decorators/withValueOnChange.tsx +18 -0
- package/src/stories/decorators/withWrapper.tsx +19 -0
- package/src/stories/generated/Autocomplete/Demos.stories.tsx +7 -0
- package/src/stories/generated/Avatar/Demos.stories.tsx +7 -0
- package/src/stories/generated/Badge/Demos.stories.tsx +9 -0
- package/src/stories/generated/Button/Demos.stories.tsx +11 -0
- package/src/stories/generated/Checkbox/Demos.stories.tsx +6 -0
- package/src/stories/generated/Chip/Demos.stories.tsx +11 -0
- package/src/stories/generated/CommentBlock/Demos.stories.tsx +8 -0
- package/src/stories/generated/DatePicker/Demos.stories.tsx +8 -0
- package/src/stories/generated/Dialog/Demos.stories.tsx +10 -0
- package/src/stories/generated/Divider/Demos.stories.tsx +6 -0
- package/src/stories/generated/Dropdown/Demos.stories.tsx +8 -0
- package/src/stories/generated/ExpansionPanel/Demos.stories.tsx +9 -0
- package/src/stories/generated/Flag/Demos.stories.tsx +6 -0
- package/src/stories/generated/GenericBlock/Demos.stories.tsx +8 -0
- package/src/stories/generated/Heading/Demos.stories.tsx +6 -0
- package/src/stories/generated/Icon/Demos.stories.tsx +8 -0
- package/src/stories/generated/ImageBlock/Demos.stories.tsx +9 -0
- package/src/stories/generated/ImageLightbox/Demos.stories.tsx +6 -0
- package/src/stories/generated/Lightbox/Demos.stories.tsx +6 -0
- package/src/stories/generated/LinkPreview/Demos.stories.tsx +7 -0
- package/src/stories/generated/List/Demos.stories.tsx +11 -0
- package/src/stories/generated/Message/Demos.stories.tsx +11 -0
- package/src/stories/generated/Mosaic/Demos.stories.tsx +10 -0
- package/src/stories/generated/Notification/Demos.stories.tsx +6 -0
- package/src/stories/generated/Popover/Demos.stories.tsx +11 -0
- package/src/stories/generated/PopoverDialog/Demos.stories.tsx +6 -0
- package/src/stories/generated/PostBlock/Demos.stories.tsx +6 -0
- package/src/stories/generated/Progress/Demos.stories.tsx +7 -0
- package/src/stories/generated/ProgressTracker/Demos.stories.tsx +9 -0
- package/src/stories/generated/RadioButton/Demos.stories.tsx +6 -0
- package/src/stories/generated/Select/Demos.stories.tsx +14 -0
- package/src/stories/generated/SideNavigation/Demos.stories.tsx +10 -0
- package/src/stories/generated/Skeleton/Demos.stories.tsx +9 -0
- package/src/stories/generated/Slider/Demos.stories.tsx +9 -0
- package/src/stories/generated/Slideshow/Demos.stories.tsx +8 -0
- package/src/stories/generated/Switch/Demos.stories.tsx +6 -0
- package/src/stories/generated/Table/Demos.stories.tsx +7 -0
- package/src/stories/generated/Tabs/Demos.stories.tsx +8 -0
- package/src/stories/generated/TextField/Demos.stories.tsx +20 -0
- package/src/stories/generated/Thumbnail/Demos.stories.tsx +12 -0
- package/src/stories/generated/Toolbar/Demos.stories.tsx +10 -0
- package/src/stories/generated/Tooltip/Demos.stories.tsx +8 -0
- package/src/stories/generated/Uploader/Demos.stories.tsx +8 -0
- package/src/stories/generated/UserBlock/Demos.stories.tsx +11 -0
- package/src/stories/utils/CustomLink.tsx +12 -0
- package/src/stories/utils/concatPath.tsx +17 -0
- package/src/stories/utils/disableArgTypes.ts +3 -0
- package/src/stories/utils/initDemoShadowDOMPortal.ts +10 -0
- package/src/stories/utils/lorem.ts +59 -0
- package/src/stories/utils/theming.tsx +166 -0
- package/src/stories/utils/toFlattenProps.ts +28 -0
- package/src/stories/utils/withCategory.ts +12 -0
- package/src/testing/utils/ThemeSentinel.tsx +10 -0
- package/src/testing/utils/commonTestsSuiteRTL.tsx +193 -0
- package/src/testing/utils/index.ts +1 -0
- package/src/testing/utils/queries.ts +19 -0
- package/src/untypped-modules.d.ts +9 -0
- package/src/utils/ClickAwayProvider/ClickAwayProvider.stories.jsx +70 -0
- package/src/utils/ClickAwayProvider/ClickAwayProvider.tsx +69 -0
- package/src/utils/ClickAwayProvider/index.ts +1 -0
- package/src/utils/MaterialThemeSwitcher/MaterialThemeSwitcher.tsx +54 -0
- package/src/utils/MaterialThemeSwitcher/index.ts +1 -0
- package/src/utils/Portal/Portal.test.tsx +31 -0
- package/src/utils/Portal/Portal.tsx +33 -0
- package/src/utils/Portal/PortalProvider.stories.jsx +22 -0
- package/src/utils/Portal/PortalProvider.test.tsx +72 -0
- package/src/utils/Portal/PortalProvider.tsx +24 -0
- package/src/utils/Portal/index.tsx +2 -0
- package/src/utils/browser/DOM/findImage.tsx +3 -0
- package/src/utils/browser/DOM/startViewTransition.ts +68 -0
- package/src/utils/browser/focus/constants.ts +7 -0
- package/src/utils/browser/focus/getFirstAndLastFocusable.test.ts +134 -0
- package/src/utils/browser/focus/getFirstAndLastFocusable.ts +21 -0
- package/src/utils/browser/focus/getFocusableElements.test.ts +151 -0
- package/src/utils/browser/focus/getFocusableElements.ts +7 -0
- package/src/utils/browser/isFocusVisible.ts +9 -0
- package/src/utils/browser/isHoverNotSupported.test.js +24 -0
- package/src/utils/browser/isHoverNotSupported.ts +2 -0
- package/src/utils/browser/isReducedMotion.ts +6 -0
- package/src/utils/date/addMonthResetDay.test.ts +13 -0
- package/src/utils/date/addMonthResetDay.ts +9 -0
- package/src/utils/date/formatDayNumber.test.ts +12 -0
- package/src/utils/date/formatDayNumber.ts +5 -0
- package/src/utils/date/getFirstDayOfWeek.test.ts +20 -0
- package/src/utils/date/getFirstDayOfWeek.ts +59 -0
- package/src/utils/date/getMonthCalendar.test.ts +127 -0
- package/src/utils/date/getMonthCalendar.ts +69 -0
- package/src/utils/date/getWeekDays.test.ts +48 -0
- package/src/utils/date/getWeekDays.ts +34 -0
- package/src/utils/date/getYearDisplayName.test.ts +20 -0
- package/src/utils/date/getYearDisplayName.ts +12 -0
- package/src/utils/date/isDateValid.test.ts +15 -0
- package/src/utils/date/isDateValid.ts +4 -0
- package/src/utils/date/isSameDay.test.ts +37 -0
- package/src/utils/date/isSameDay.ts +11 -0
- package/src/utils/disabled/DisabledStateContext.tsx +29 -0
- package/src/utils/disabled/DisabledStateProvider.stories.tsx +92 -0
- package/src/utils/disabled/index.ts +2 -0
- package/src/utils/disabled/useDisableStateProps.test.tsx +74 -0
- package/src/utils/disabled/useDisableStateProps.tsx +37 -0
- package/src/utils/function/makeListenerTowerContext.ts +32 -0
- package/src/utils/index.ts +7 -0
- package/src/utils/locale/getCurrentLocale.ts +4 -0
- package/src/utils/locale/parseLocale.test.ts +17 -0
- package/src/utils/locale/parseLocale.ts +23 -0
- package/src/utils/locale/types.ts +8 -0
- package/src/utils/number/clamp.ts +17 -0
- package/src/utils/object/isEqual.test.ts +25 -0
- package/src/utils/object/isEqual.ts +11 -0
- package/src/utils/partitionMulti.test.ts +27 -0
- package/{_internal/4daccdd5.js → src/utils/partitionMulti.ts} +9 -5
- package/src/utils/react/OnBeforeUnmount.tsx +20 -0
- package/src/utils/react/RawClickable.test.tsx +153 -0
- package/src/utils/react/RawClickable.tsx +65 -0
- package/src/utils/react/flattenChildren.ts +32 -0
- package/src/utils/react/forwardRef.ts +11 -0
- package/src/utils/react/forwardRefPolymorphic.ts +9 -0
- package/src/utils/react/mergeRefs.ts +33 -0
- package/src/utils/react/renderLink.tsx +17 -0
- package/src/utils/react/skipRender.tsx +18 -0
- package/src/utils/react/unref.ts +7 -0
- package/src/utils/react/wrapChildrenIconWithSpaces.test.tsx +37 -0
- package/src/utils/react/wrapChildrenIconWithSpaces.tsx +22 -0
- package/src/utils/theme/ThemeContext.ts +16 -0
- package/src/utils/theme/invertTheme.ts +4 -0
- package/src/utils/type/Comp.ts +14 -0
- package/src/utils/type/ComponentRef.ts +16 -0
- package/src/utils/type/HasAriaDisabled.ts +6 -0
- package/src/utils/type/HasPolymorphicAs.ts +6 -0
- package/src/utils/type/HasRequiredLinkHref.ts +1 -0
- package/src/utils/type/MaybeElementOrRef.ts +6 -0
- package/src/utils/type/index.ts +9 -0
- package/src/utils/type/isComponent.ts +33 -0
- package/src/utils/type/isComponentType.ts +9 -0
- package/utils/index.d.ts +1 -1
- package/utils/index.js +1 -3
- package/utils/index.js.map +1 -1
- package/_internal/0420e67b.js +0 -119
- 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 +0 -97
- package/_internal/0be1006e.js.map +0 -1
- package/_internal/0d1a078c.js +0 -144
- package/_internal/0d1a078c.js.map +0 -1
- package/_internal/15eab19b.js +0 -75
- package/_internal/15eab19b.js.map +0 -1
- package/_internal/179a84d1.js +0 -259
- package/_internal/179a84d1.js.map +0 -1
- package/_internal/193521fa.js +0 -52
- 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 +0 -146
- package/_internal/1ea72630.js.map +0 -1
- package/_internal/21b83d16.js +0 -137
- package/_internal/21b83d16.js.map +0 -1
- package/_internal/230173a8.js +0 -13
- package/_internal/230173a8.js.map +0 -1
- package/_internal/297bed8f.js +0 -457
- package/_internal/297bed8f.js.map +0 -1
- package/_internal/2a3d237c.js +0 -12
- package/_internal/2a3d237c.js.map +0 -1
- package/_internal/2c2b6a89.js +0 -52
- package/_internal/2c2b6a89.js.map +0 -1
- package/_internal/2f1716fa.js +0 -237
- package/_internal/2f1716fa.js.map +0 -1
- package/_internal/2f6c7f84.js +0 -103
- package/_internal/2f6c7f84.js.map +0 -1
- package/_internal/3181f000.js +0 -14
- package/_internal/3181f000.js.map +0 -1
- package/_internal/329b5f12.js +0 -55
- package/_internal/329b5f12.js.map +0 -1
- package/_internal/332e9844.js +0 -2
- package/_internal/332e9844.js.map +0 -1
- package/_internal/34c59f5b.js +0 -681
- package/_internal/34c59f5b.js.map +0 -1
- package/_internal/36bd7352.js +0 -219
- package/_internal/36bd7352.js.map +0 -1
- package/_internal/370bdaed.js +0 -61
- package/_internal/370bdaed.js.map +0 -1
- package/_internal/37b007a4.js +0 -20
- package/_internal/37b007a4.js.map +0 -1
- package/_internal/3a1facc0.js +0 -18
- package/_internal/3a1facc0.js.map +0 -1
- package/_internal/3a4e4636.js +0 -162
- package/_internal/3a4e4636.js.map +0 -1
- package/_internal/3e653144.js +0 -49
- package/_internal/3e653144.js.map +0 -1
- package/_internal/3f86608e.js +0 -45
- package/_internal/3f86608e.js.map +0 -1
- package/_internal/478b5c92.js +0 -24
- 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 +0 -2155
- package/_internal/4cd870a5.js.map +0 -1
- package/_internal/4daccdd5.js.map +0 -1
- package/_internal/501f2f9f.js +0 -58
- package/_internal/501f2f9f.js.map +0 -1
- package/_internal/5e7b90e2.js +0 -2
- package/_internal/5e7b90e2.js.map +0 -1
- package/_internal/5ec059fe.js +0 -145
- package/_internal/5ec059fe.js.map +0 -1
- package/_internal/5f8f9454.js +0 -70
- package/_internal/5f8f9454.js.map +0 -1
- package/_internal/5fe09341.js +0 -112
- package/_internal/5fe09341.js.map +0 -1
- package/_internal/628468c4.js +0 -313
- package/_internal/628468c4.js.map +0 -1
- package/_internal/6589b796.js +0 -280
- package/_internal/6589b796.js.map +0 -1
- package/_internal/65f91970.js +0 -297
- package/_internal/65f91970.js.map +0 -1
- package/_internal/66f691d3.js +0 -74
- package/_internal/66f691d3.js.map +0 -1
- package/_internal/68c10f98.js +0 -166
- 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 +0 -165
- package/_internal/6da19518.js.map +0 -1
- package/_internal/7093ba23.js +0 -95
- package/_internal/7093ba23.js.map +0 -1
- package/_internal/74a4a214.js +0 -82
- package/_internal/74a4a214.js.map +0 -1
- package/_internal/76be70dd.js +0 -42
- package/_internal/76be70dd.js.map +0 -1
- package/_internal/78df9309.js +0 -20
- package/_internal/78df9309.js.map +0 -1
- package/_internal/7b221b05.js +0 -9
- package/_internal/7b221b05.js.map +0 -1
- package/_internal/7daf0f24.js +0 -77
- package/_internal/7daf0f24.js.map +0 -1
- package/_internal/7f54e947.js +0 -758
- package/_internal/7f54e947.js.map +0 -1
- package/_internal/825ac334.js +0 -130
- package/_internal/825ac334.js.map +0 -1
- package/_internal/827b804a.js +0 -6
- package/_internal/827b804a.js.map +0 -1
- package/_internal/84dfe68f.js +0 -436
- package/_internal/84dfe68f.js.map +0 -1
- package/_internal/85e3a5ca.js +0 -145
- package/_internal/85e3a5ca.js.map +0 -1
- package/_internal/86aa4aa4.js +0 -154
- package/_internal/86aa4aa4.js.map +0 -1
- package/_internal/88ec77c2.js +0 -130
- package/_internal/88ec77c2.js.map +0 -1
- package/_internal/8ab42752.js +0 -103
- package/_internal/8ab42752.js.map +0 -1
- package/_internal/95cfd814.js +0 -70
- package/_internal/95cfd814.js.map +0 -1
- package/_internal/9a4dfad0.js +0 -326
- package/_internal/9a4dfad0.js.map +0 -1
- package/_internal/9c9df5f2.js +0 -80
- package/_internal/9c9df5f2.js.map +0 -1
- package/_internal/9d1336a1.js +0 -19
- package/_internal/9d1336a1.js.map +0 -1
- package/_internal/9fdc715b.js +0 -152
- 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 +0 -122
- package/_internal/a84f4981.js.map +0 -1
- package/_internal/b0a7a999.js +0 -59
- package/_internal/b0a7a999.js.map +0 -1
- package/_internal/b0b2e33d.js +0 -359
- package/_internal/b0b2e33d.js.map +0 -1
- package/_internal/b1af5979.js +0 -653
- package/_internal/b1af5979.js.map +0 -1
- package/_internal/b477da26.js +0 -164
- package/_internal/b477da26.js.map +0 -1
- package/_internal/b8667090.js +0 -36
- package/_internal/b8667090.js.map +0 -1
- package/_internal/bae266a9.js +0 -61
- package/_internal/bae266a9.js.map +0 -1
- package/_internal/be6da9b0.js +0 -296
- package/_internal/be6da9b0.js.map +0 -1
- package/_internal/c0414b89.js +0 -101
- package/_internal/c0414b89.js.map +0 -1
- package/_internal/c2388b10.js +0 -58
- 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 +0 -116
- 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 +0 -62
- package/_internal/d5f316cb.js.map +0 -1
- package/_internal/db4fdc7b.js +0 -310
- 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 +0 -50
- package/_internal/e6dd117e.js.map +0 -1
- package/_internal/e806b848.js +0 -9
- package/_internal/e806b848.js.map +0 -1
- package/_internal/ea04260d.js +0 -29
- package/_internal/ea04260d.js.map +0 -1
- package/_internal/eaa8b1d8.js +0 -150
- package/_internal/eaa8b1d8.js.map +0 -1
- package/_internal/eaf6c45a.js +0 -4
- package/_internal/eaf6c45a.js.map +0 -1
- package/_internal/edab29ce.js +0 -308
- 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/f0900583.js.map +0 -1
- package/_internal/f0d7d6ea.js +0 -30
- package/_internal/f0d7d6ea.js.map +0 -1
- package/_internal/f23cdf84.js +0 -181
- package/_internal/f23cdf84.js.map +0 -1
- package/_internal/f52e979e.js +0 -3
- package/_internal/f52e979e.js.map +0 -1
- package/_internal/f5508d3d.js +0 -792
- package/_internal/f5508d3d.js.map +0 -1
- package/_internal/f93fe83e.js +0 -46
- package/_internal/f93fe83e.js.map +0 -1
- /package/_internal/{d95844c1.d.ts → Falsy.d.ts} +0 -0
package/_internal/628468c4.js
DELETED
|
@@ -1,313 +0,0 @@
|
|
|
1
|
-
import React__default, { useState, useEffect, useMemo } from 'react';
|
|
2
|
-
import { i as AspectRatio, m as getRootClassName, n as forwardRef, b as Theme, l as classNames, c as Size } from './6589b796.js';
|
|
3
|
-
import { h as handleBasicClasses } from './e2afb13f.js';
|
|
4
|
-
import { u as useMergeRefs } from './f0d7d6ea.js';
|
|
5
|
-
import { u as useTheme } from './3181f000.js';
|
|
6
|
-
import { R as RawClickable } from './2c2b6a89.js';
|
|
7
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
8
|
-
import { u as useDisableStateProps } from './b8667090.js';
|
|
9
|
-
import { I as Icon } from './8ab42752.js';
|
|
10
|
-
|
|
11
|
-
const mdiImageBroken = 'M19 3a2 2 0 0 1 2 2v6h-2v2h-2v2h-2v2h-2v2h-2v2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm2 12v4a2 2 0 0 1-2 2h-4v-2h2v-2h2v-2zm-2-6.5a.5.5 0 0 0-.5-.5h-13a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .5.5H11v-1h2v-2h2v-2h2V9h2z';
|
|
12
|
-
|
|
13
|
-
function getState(img, event) {
|
|
14
|
-
// Error event occurred or image has no source.
|
|
15
|
-
if (event?.type === 'error' || img?.complete && !img.getAttribute('src')) {
|
|
16
|
-
return 'hasError';
|
|
17
|
-
}
|
|
18
|
-
// Image is undefined or incomplete.
|
|
19
|
-
if (!img || !img.complete) {
|
|
20
|
-
return 'isLoading';
|
|
21
|
-
}
|
|
22
|
-
// Else loaded.
|
|
23
|
-
return 'isLoaded';
|
|
24
|
-
}
|
|
25
|
-
function useImageLoad(imageURL, imgRef) {
|
|
26
|
-
const [state, setState] = useState(getState(imgRef));
|
|
27
|
-
|
|
28
|
-
// Update state when changing image URL or DOM reference.
|
|
29
|
-
useEffect(() => {
|
|
30
|
-
setState(getState(imgRef));
|
|
31
|
-
}, [imageURL, imgRef]);
|
|
32
|
-
|
|
33
|
-
// Listen to `load` and `error` event on image
|
|
34
|
-
useEffect(() => {
|
|
35
|
-
const img = imgRef;
|
|
36
|
-
if (!img) return undefined;
|
|
37
|
-
const update = event => setState(getState(img, event));
|
|
38
|
-
img.addEventListener('load', update);
|
|
39
|
-
img.addEventListener('error', update);
|
|
40
|
-
return () => {
|
|
41
|
-
img.removeEventListener('load', update);
|
|
42
|
-
img.removeEventListener('error', update);
|
|
43
|
-
};
|
|
44
|
-
}, [imgRef, imgRef?.src]);
|
|
45
|
-
return state;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// Calculate shift to center the focus point in the container.
|
|
49
|
-
function shiftPosition({
|
|
50
|
-
scale,
|
|
51
|
-
focusPoint,
|
|
52
|
-
imageSize,
|
|
53
|
-
containerSize
|
|
54
|
-
}) {
|
|
55
|
-
const scaledSize = imageSize / scale;
|
|
56
|
-
if (scaledSize === containerSize) return 0;
|
|
57
|
-
const scaledFocusHeight = focusPoint * scaledSize;
|
|
58
|
-
const startFocus = scaledFocusHeight - containerSize / 2;
|
|
59
|
-
const shift = startFocus / (scaledSize - containerSize);
|
|
60
|
-
return Math.floor(Math.max(Math.min(shift, 1), 0) * 100);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Compute CSS properties to apply the focus point.
|
|
64
|
-
const useFocusPointStyle = ({
|
|
65
|
-
image,
|
|
66
|
-
aspectRatio,
|
|
67
|
-
focusPoint,
|
|
68
|
-
imgProps: {
|
|
69
|
-
width,
|
|
70
|
-
height
|
|
71
|
-
} = {}
|
|
72
|
-
}, element, isLoaded) => {
|
|
73
|
-
// Get natural image size from imgProps or img element.
|
|
74
|
-
const imageSize = useMemo(() => {
|
|
75
|
-
// Focus point is not applicable => exit early
|
|
76
|
-
if (!image || aspectRatio === AspectRatio.original || !focusPoint?.x && !focusPoint?.y) return undefined;
|
|
77
|
-
if (typeof width === 'number' && typeof height === 'number') return {
|
|
78
|
-
width,
|
|
79
|
-
height
|
|
80
|
-
};
|
|
81
|
-
if (element && isLoaded) return {
|
|
82
|
-
width: element.naturalWidth,
|
|
83
|
-
height: element.naturalHeight
|
|
84
|
-
};
|
|
85
|
-
return undefined;
|
|
86
|
-
}, [aspectRatio, element, focusPoint?.x, focusPoint?.y, height, image, isLoaded, width]);
|
|
87
|
-
|
|
88
|
-
// Get container size (dependant on imageSize).
|
|
89
|
-
const [containerSize, setContainerSize] = useState(undefined);
|
|
90
|
-
useEffect(function updateContainerSize() {
|
|
91
|
-
const cWidth = element?.offsetWidth;
|
|
92
|
-
const cHeight = element?.offsetHeight;
|
|
93
|
-
if (cWidth && cHeight) {
|
|
94
|
-
// Update only if needed.
|
|
95
|
-
setContainerSize(oldContainerSize => oldContainerSize?.width === cWidth && oldContainerSize.height === cHeight ? oldContainerSize : {
|
|
96
|
-
width: cWidth,
|
|
97
|
-
height: cHeight
|
|
98
|
-
});
|
|
99
|
-
} else if (imageSize) {
|
|
100
|
-
// Wait for a render (in case the container size is dependent on the image size).
|
|
101
|
-
requestAnimationFrame(updateContainerSize);
|
|
102
|
-
}
|
|
103
|
-
}, [element?.offsetHeight, element?.offsetWidth, imageSize]);
|
|
104
|
-
|
|
105
|
-
// Compute style.
|
|
106
|
-
const style = useMemo(() => {
|
|
107
|
-
// Focus point is not applicable => exit early
|
|
108
|
-
if (!image || aspectRatio === AspectRatio.original || !focusPoint?.x && !focusPoint?.y) {
|
|
109
|
-
return {};
|
|
110
|
-
}
|
|
111
|
-
if (!element || !imageSize) {
|
|
112
|
-
// Focus point can be computed but now right now (image size unknown).
|
|
113
|
-
return {
|
|
114
|
-
visibility: 'hidden'
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
if (!containerSize || !imageSize.height || !imageSize.width) {
|
|
118
|
-
// Missing container or image size abort focus point compute.
|
|
119
|
-
return {};
|
|
120
|
-
}
|
|
121
|
-
const heightScale = imageSize.height / containerSize.height;
|
|
122
|
-
const widthScale = imageSize.width / containerSize.width;
|
|
123
|
-
const scale = Math.min(widthScale, heightScale);
|
|
124
|
-
|
|
125
|
-
// Focus Y relative to the top (instead of the center)
|
|
126
|
-
const focusPointFromTop = Math.abs((focusPoint?.y || 0) - 1) / 2;
|
|
127
|
-
const y = shiftPosition({
|
|
128
|
-
scale,
|
|
129
|
-
focusPoint: focusPointFromTop,
|
|
130
|
-
imageSize: imageSize.height,
|
|
131
|
-
containerSize: containerSize.height
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
// Focus X relative to the left (instead of the center)
|
|
135
|
-
const focusPointFromLeft = Math.abs((focusPoint?.x || 0) + 1) / 2;
|
|
136
|
-
const x = shiftPosition({
|
|
137
|
-
scale,
|
|
138
|
-
focusPoint: focusPointFromLeft,
|
|
139
|
-
imageSize: imageSize.width,
|
|
140
|
-
containerSize: containerSize.width
|
|
141
|
-
});
|
|
142
|
-
const objectPosition = `${x}% ${y}%`;
|
|
143
|
-
return {
|
|
144
|
-
objectPosition
|
|
145
|
-
};
|
|
146
|
-
}, [aspectRatio, containerSize, element, focusPoint?.x, focusPoint?.y, image, imageSize]);
|
|
147
|
-
return style;
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Component display name.
|
|
152
|
-
*/
|
|
153
|
-
const COMPONENT_NAME = 'Thumbnail';
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Component default class name and class prefix.
|
|
157
|
-
*/
|
|
158
|
-
const CLASSNAME = getRootClassName(COMPONENT_NAME);
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Component default props.
|
|
162
|
-
*/
|
|
163
|
-
const DEFAULT_PROPS = {
|
|
164
|
-
fallback: mdiImageBroken,
|
|
165
|
-
loading: 'lazy'
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Thumbnail component.
|
|
170
|
-
*
|
|
171
|
-
* @param props Component props.
|
|
172
|
-
* @param ref Component ref.
|
|
173
|
-
* @return React element.
|
|
174
|
-
*/
|
|
175
|
-
const Thumbnail = forwardRef((props, ref) => {
|
|
176
|
-
const {
|
|
177
|
-
isAnyDisabled,
|
|
178
|
-
otherProps,
|
|
179
|
-
disabledStateProps
|
|
180
|
-
} = useDisableStateProps(props);
|
|
181
|
-
const defaultTheme = useTheme() || Theme.light;
|
|
182
|
-
const {
|
|
183
|
-
align,
|
|
184
|
-
alt,
|
|
185
|
-
aspectRatio = AspectRatio.original,
|
|
186
|
-
badge,
|
|
187
|
-
className,
|
|
188
|
-
crossOrigin,
|
|
189
|
-
fallback = DEFAULT_PROPS.fallback,
|
|
190
|
-
fillHeight,
|
|
191
|
-
// `focusPoint` needs to be here to remove it from `forwardedProps`.
|
|
192
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
193
|
-
focusPoint,
|
|
194
|
-
image,
|
|
195
|
-
imgProps,
|
|
196
|
-
imgRef: propImgRef,
|
|
197
|
-
isLoading: isLoadingProp,
|
|
198
|
-
objectFit,
|
|
199
|
-
loading = DEFAULT_PROPS.loading,
|
|
200
|
-
loadingPlaceholderImageRef,
|
|
201
|
-
size,
|
|
202
|
-
theme = defaultTheme,
|
|
203
|
-
variant,
|
|
204
|
-
linkProps,
|
|
205
|
-
linkAs,
|
|
206
|
-
...forwardedProps
|
|
207
|
-
} = otherProps;
|
|
208
|
-
const [imgElement, setImgElement] = useState();
|
|
209
|
-
|
|
210
|
-
// Image loading state.
|
|
211
|
-
const loadingState = useImageLoad(image, imgElement);
|
|
212
|
-
const isLoaded = loadingState === 'isLoaded';
|
|
213
|
-
const isLoading = isLoadingProp || loadingState === 'isLoading';
|
|
214
|
-
const hasError = loadingState === 'hasError';
|
|
215
|
-
|
|
216
|
-
// Focus point.
|
|
217
|
-
const focusPointStyle = useFocusPointStyle(props, imgElement, isLoaded);
|
|
218
|
-
const hasIconErrorFallback = hasError && typeof fallback === 'string';
|
|
219
|
-
const hasCustomErrorFallback = hasError && !hasIconErrorFallback;
|
|
220
|
-
const imageErrorStyle = {};
|
|
221
|
-
if (hasIconErrorFallback) {
|
|
222
|
-
// Keep the image layout on icon fallback.
|
|
223
|
-
imageErrorStyle.visibility = 'hidden';
|
|
224
|
-
} else if (hasCustomErrorFallback) {
|
|
225
|
-
// Remove the image on custom fallback.
|
|
226
|
-
imageErrorStyle.display = 'none';
|
|
227
|
-
}
|
|
228
|
-
const isLink = Boolean(linkProps?.href || linkAs);
|
|
229
|
-
const isClickable = !isAnyDisabled && Boolean(isLink || !!forwardedProps.onClick);
|
|
230
|
-
const Wrapper = isClickable ? RawClickable : 'div';
|
|
231
|
-
const wrapperProps = {
|
|
232
|
-
...forwardedProps
|
|
233
|
-
};
|
|
234
|
-
if (isClickable) {
|
|
235
|
-
Object.assign(wrapperProps, {
|
|
236
|
-
as: linkAs || (linkProps?.href ? 'a' : 'button')
|
|
237
|
-
}, disabledStateProps);
|
|
238
|
-
if (isLink) {
|
|
239
|
-
Object.assign(wrapperProps, linkProps);
|
|
240
|
-
} else {
|
|
241
|
-
wrapperProps['aria-label'] = forwardedProps['aria-label'] || alt;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
// If we have a loading placeholder image that is really loaded (complete)
|
|
246
|
-
const loadingPlaceholderImage = isLoading && loadingPlaceholderImageRef?.current?.complete && loadingPlaceholderImageRef?.current || undefined;
|
|
247
|
-
|
|
248
|
-
// Set loading placeholder image as background
|
|
249
|
-
const loadingStyle = loadingPlaceholderImage ? {
|
|
250
|
-
backgroundImage: `url(${loadingPlaceholderImage.src})`
|
|
251
|
-
} : undefined;
|
|
252
|
-
return /*#__PURE__*/jsxs(Wrapper, {
|
|
253
|
-
...wrapperProps,
|
|
254
|
-
ref: ref,
|
|
255
|
-
className: classNames(linkProps?.className, className, handleBasicClasses({
|
|
256
|
-
align,
|
|
257
|
-
aspectRatio,
|
|
258
|
-
prefix: CLASSNAME,
|
|
259
|
-
size,
|
|
260
|
-
theme,
|
|
261
|
-
variant,
|
|
262
|
-
isClickable,
|
|
263
|
-
hasError,
|
|
264
|
-
hasIconErrorFallback,
|
|
265
|
-
hasCustomErrorFallback,
|
|
266
|
-
isLoading,
|
|
267
|
-
objectFit,
|
|
268
|
-
hasBadge: !!badge
|
|
269
|
-
}), fillHeight && `${CLASSNAME}--fill-height`),
|
|
270
|
-
children: [/*#__PURE__*/jsxs("span", {
|
|
271
|
-
className: `${CLASSNAME}__background`,
|
|
272
|
-
children: [/*#__PURE__*/jsx("img", {
|
|
273
|
-
// Use placeholder image size
|
|
274
|
-
width: loadingPlaceholderImage?.naturalWidth,
|
|
275
|
-
height: loadingPlaceholderImage?.naturalHeight,
|
|
276
|
-
...imgProps,
|
|
277
|
-
style: {
|
|
278
|
-
// Reserve space while loading (when possible)
|
|
279
|
-
width: isLoading ? imgProps?.width || loadingPlaceholderImage?.naturalWidth : undefined,
|
|
280
|
-
...imgProps?.style,
|
|
281
|
-
...imageErrorStyle,
|
|
282
|
-
...focusPointStyle,
|
|
283
|
-
...loadingStyle
|
|
284
|
-
},
|
|
285
|
-
ref: useMergeRefs(setImgElement, propImgRef),
|
|
286
|
-
className: classNames(handleBasicClasses({
|
|
287
|
-
prefix: `${CLASSNAME}__image`,
|
|
288
|
-
isLoading,
|
|
289
|
-
hasDefinedSize: Boolean(imgProps?.height && imgProps.width)
|
|
290
|
-
}), imgProps?.className),
|
|
291
|
-
crossOrigin: crossOrigin,
|
|
292
|
-
src: image,
|
|
293
|
-
alt: alt,
|
|
294
|
-
loading: loading
|
|
295
|
-
}), !isLoading && hasError && /*#__PURE__*/jsx("span", {
|
|
296
|
-
className: `${CLASSNAME}__fallback`,
|
|
297
|
-
children: hasIconErrorFallback ? /*#__PURE__*/jsx(Icon, {
|
|
298
|
-
icon: fallback,
|
|
299
|
-
size: Size.xxs,
|
|
300
|
-
theme: theme
|
|
301
|
-
}) : fallback
|
|
302
|
-
})]
|
|
303
|
-
}), badge && /*#__PURE__*/React__default.cloneElement(badge, {
|
|
304
|
-
className: classNames(`${CLASSNAME}__badge`, badge.props.className)
|
|
305
|
-
})]
|
|
306
|
-
});
|
|
307
|
-
});
|
|
308
|
-
Thumbnail.displayName = COMPONENT_NAME;
|
|
309
|
-
Thumbnail.className = CLASSNAME;
|
|
310
|
-
Thumbnail.defaultProps = DEFAULT_PROPS;
|
|
311
|
-
|
|
312
|
-
export { Thumbnail as T, useFocusPointStyle as u };
|
|
313
|
-
//# sourceMappingURL=628468c4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"628468c4.js","sources":["../../../lumx-icons/dist/esm/image-broken.js","../../src/components/thumbnail/useImageLoad.ts","../../src/components/thumbnail/useFocusPointStyle.tsx","../../src/components/thumbnail/Thumbnail.tsx"],"sourcesContent":["export const mdiImageBroken = 'M19 3a2 2 0 0 1 2 2v6h-2v2h-2v2h-2v2h-2v2h-2v2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm2 12v4a2 2 0 0 1-2 2h-4v-2h2v-2h2v-2zm-2-6.5a.5.5 0 0 0-.5-.5h-13a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .5.5H11v-1h2v-2h2v-2h2V9h2z';","import { useEffect, useState } from 'react';\n\nexport type LoadingState = 'isLoading' | 'isLoaded' | 'hasError';\n\nfunction getState(img: HTMLImageElement | null | undefined, event?: Event) {\n // Error event occurred or image has no source.\n if (event?.type === 'error' || (img?.complete && !img.getAttribute('src'))) {\n return 'hasError';\n }\n // Image is undefined or incomplete.\n if (!img || !img.complete) {\n return 'isLoading';\n }\n // Else loaded.\n return 'isLoaded';\n}\n\nexport function useImageLoad(imageURL: string, imgRef?: HTMLImageElement): LoadingState {\n const [state, setState] = useState<LoadingState>(getState(imgRef));\n\n // Update state when changing image URL or DOM reference.\n useEffect(() => {\n setState(getState(imgRef));\n }, [imageURL, imgRef]);\n\n // Listen to `load` and `error` event on image\n useEffect(() => {\n const img = imgRef;\n if (!img) return undefined;\n const update = (event?: Event) => setState(getState(img, event));\n img.addEventListener('load', update);\n img.addEventListener('error', update);\n return () => {\n img.removeEventListener('load', update);\n img.removeEventListener('error', update);\n };\n }, [imgRef, imgRef?.src]);\n\n return state;\n}\n","import { CSSProperties, useEffect, useMemo, useState } from 'react';\nimport { AspectRatio } from '@lumx/core/js/constants';\nimport { ThumbnailProps } from '@lumx/react/components/thumbnail/Thumbnail';\nimport { RectSize } from '@lumx/react/utils/type';\n\n// Calculate shift to center the focus point in the container.\nexport function shiftPosition({\n scale,\n focusPoint,\n imageSize,\n containerSize,\n}: {\n scale: number;\n focusPoint: number;\n imageSize: number;\n containerSize: number;\n}) {\n const scaledSize = imageSize / scale;\n if (scaledSize === containerSize) return 0;\n\n const scaledFocusHeight = focusPoint * scaledSize;\n const startFocus = scaledFocusHeight - containerSize / 2;\n const shift = startFocus / (scaledSize - containerSize);\n\n return Math.floor(Math.max(Math.min(shift, 1), 0) * 100);\n}\n\n// Compute CSS properties to apply the focus point.\nexport const useFocusPointStyle = (\n { image, aspectRatio, focusPoint, imgProps: { width, height } = {} }: ThumbnailProps,\n element: HTMLImageElement | undefined,\n isLoaded: boolean,\n): CSSProperties => {\n // Get natural image size from imgProps or img element.\n const imageSize: RectSize | undefined = useMemo(() => {\n // Focus point is not applicable => exit early\n if (!image || aspectRatio === AspectRatio.original || (!focusPoint?.x && !focusPoint?.y)) return undefined;\n if (typeof width === 'number' && typeof height === 'number') return { width, height };\n if (element && isLoaded) return { width: element.naturalWidth, height: element.naturalHeight };\n return undefined;\n }, [aspectRatio, element, focusPoint?.x, focusPoint?.y, height, image, isLoaded, width]);\n\n // Get container size (dependant on imageSize).\n const [containerSize, setContainerSize] = useState<RectSize | undefined>(undefined);\n useEffect(\n function updateContainerSize() {\n const cWidth = element?.offsetWidth;\n const cHeight = element?.offsetHeight;\n if (cWidth && cHeight) {\n // Update only if needed.\n setContainerSize((oldContainerSize) =>\n oldContainerSize?.width === cWidth && oldContainerSize.height === cHeight\n ? oldContainerSize\n : { width: cWidth, height: cHeight },\n );\n } else if (imageSize) {\n // Wait for a render (in case the container size is dependent on the image size).\n requestAnimationFrame(updateContainerSize);\n }\n },\n [element?.offsetHeight, element?.offsetWidth, imageSize],\n );\n\n // Compute style.\n const style: CSSProperties = useMemo(() => {\n // Focus point is not applicable => exit early\n if (!image || aspectRatio === AspectRatio.original || (!focusPoint?.x && !focusPoint?.y)) {\n return {};\n }\n if (!element || !imageSize) {\n // Focus point can be computed but now right now (image size unknown).\n return { visibility: 'hidden' };\n }\n if (!containerSize || !imageSize.height || !imageSize.width) {\n // Missing container or image size abort focus point compute.\n return {};\n }\n\n const heightScale = imageSize.height / containerSize.height;\n const widthScale = imageSize.width / containerSize.width;\n const scale = Math.min(widthScale, heightScale);\n\n // Focus Y relative to the top (instead of the center)\n const focusPointFromTop = Math.abs((focusPoint?.y || 0) - 1) / 2;\n const y = shiftPosition({\n scale,\n focusPoint: focusPointFromTop,\n imageSize: imageSize.height,\n containerSize: containerSize.height,\n });\n\n // Focus X relative to the left (instead of the center)\n const focusPointFromLeft = Math.abs((focusPoint?.x || 0) + 1) / 2;\n const x = shiftPosition({\n scale,\n focusPoint: focusPointFromLeft,\n imageSize: imageSize.width,\n containerSize: containerSize.width,\n });\n\n const objectPosition = `${x}% ${y}%`;\n\n return { objectPosition };\n }, [aspectRatio, containerSize, element, focusPoint?.x, focusPoint?.y, image, imageSize]);\n\n return style;\n};\n","import React, {\n CSSProperties,\n ImgHTMLAttributes,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactElement,\n ReactNode,\n Ref,\n useState,\n} from 'react';\n\nimport classNames from 'classnames';\n\nimport { AspectRatio, HorizontalAlignment, Icon, Size, Theme, ThumbnailObjectFit } from '@lumx/react';\nimport { Falsy, GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { mdiImageBroken } from '@lumx/icons';\nimport { useMergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { useImageLoad } from '@lumx/react/components/thumbnail/useImageLoad';\nimport { useFocusPointStyle } from '@lumx/react/components/thumbnail/useFocusPointStyle';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useDisableStateProps } from '@lumx/react/utils/disabled';\nimport { RawClickable } from '@lumx/react/utils/react/RawClickable';\nimport { FocusPoint, ThumbnailSize, ThumbnailVariant } from './types';\n\ntype ImgHTMLProps = ImgHTMLAttributes<HTMLImageElement>;\n\n/**\n * Defines the props of the component.\n */\nexport interface ThumbnailProps extends GenericProps, HasTheme {\n /** Alignment of the thumbnail in it's parent (requires flex parent). */\n align?: HorizontalAlignment;\n /** Image alternative text. */\n alt: string;\n /** Image aspect ratio. */\n aspectRatio?: AspectRatio;\n /** Badge. */\n badge?: ReactElement | Falsy;\n /** Image cross origin resource policy. */\n crossOrigin?: ImgHTMLProps['crossOrigin'];\n /** Fallback icon (SVG path) or react node when image fails to load. */\n fallback?: string | ReactNode;\n /** Whether the thumbnail should fill it's parent size (requires flex parent) or not. */\n fillHeight?: boolean;\n /** Apply relative vertical and horizontal shift (from -1 to 1) on the image position inside the thumbnail. */\n focusPoint?: FocusPoint;\n /** Image URL. */\n image: string;\n /** Props to inject into the native <img> element. */\n imgProps?: ImgHTMLProps;\n /** Reference to the native <img> element. */\n imgRef?: Ref<HTMLImageElement>;\n /** Set to true to force the display of the loading skeleton. */\n isLoading?: boolean;\n /** Set how the image should fit when its aspect ratio is constrained */\n objectFit?: ThumbnailObjectFit;\n /** Size variant of the component. */\n size?: ThumbnailSize;\n /** Image loading mode. */\n loading?: ImgHTMLProps['loading'];\n /** Ref of an existing placeholder image to display while loading. */\n loadingPlaceholderImageRef?: React.RefObject<HTMLImageElement>;\n /** On click callback. */\n onClick?: MouseEventHandler<HTMLDivElement>;\n /** On key press callback. */\n onKeyPress?: KeyboardEventHandler<HTMLDivElement>;\n /** Variant of the component. */\n variant?: ThumbnailVariant;\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}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Thumbnail';\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<ThumbnailProps> = {\n fallback: mdiImageBroken,\n loading: 'lazy',\n};\n\n/**\n * Thumbnail component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Thumbnail = forwardRef<ThumbnailProps>((props, ref) => {\n const { isAnyDisabled, otherProps, disabledStateProps } = useDisableStateProps(props);\n const defaultTheme = useTheme() || Theme.light;\n const {\n align,\n alt,\n aspectRatio = AspectRatio.original,\n badge,\n className,\n crossOrigin,\n fallback = DEFAULT_PROPS.fallback,\n fillHeight,\n // `focusPoint` needs to be here to remove it from `forwardedProps`.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n focusPoint,\n image,\n imgProps,\n imgRef: propImgRef,\n isLoading: isLoadingProp,\n objectFit,\n loading = DEFAULT_PROPS.loading,\n loadingPlaceholderImageRef,\n size,\n theme = defaultTheme,\n variant,\n linkProps,\n linkAs,\n ...forwardedProps\n } = otherProps;\n const [imgElement, setImgElement] = useState<HTMLImageElement>();\n\n // Image loading state.\n const loadingState = useImageLoad(image, imgElement);\n const isLoaded = loadingState === 'isLoaded';\n const isLoading = isLoadingProp || loadingState === 'isLoading';\n const hasError = loadingState === 'hasError';\n\n // Focus point.\n const focusPointStyle = useFocusPointStyle(props, imgElement, isLoaded);\n\n const hasIconErrorFallback = hasError && typeof fallback === 'string';\n const hasCustomErrorFallback = hasError && !hasIconErrorFallback;\n const imageErrorStyle: CSSProperties = {};\n if (hasIconErrorFallback) {\n // Keep the image layout on icon fallback.\n imageErrorStyle.visibility = 'hidden';\n } else if (hasCustomErrorFallback) {\n // Remove the image on custom fallback.\n imageErrorStyle.display = 'none';\n }\n\n const isLink = Boolean(linkProps?.href || linkAs);\n const isClickable = !isAnyDisabled && Boolean(isLink || !!forwardedProps.onClick);\n\n const Wrapper: any = isClickable ? RawClickable : 'div';\n const wrapperProps = { ...forwardedProps };\n if (isClickable) {\n Object.assign(wrapperProps, { as: linkAs || (linkProps?.href ? 'a' : 'button') }, disabledStateProps);\n if (isLink) {\n Object.assign(wrapperProps, linkProps);\n } else {\n wrapperProps['aria-label'] = forwardedProps['aria-label'] || alt;\n }\n }\n\n // If we have a loading placeholder image that is really loaded (complete)\n const loadingPlaceholderImage =\n (isLoading && loadingPlaceholderImageRef?.current?.complete && loadingPlaceholderImageRef?.current) ||\n undefined;\n\n // Set loading placeholder image as background\n const loadingStyle = loadingPlaceholderImage\n ? { backgroundImage: `url(${loadingPlaceholderImage.src})` }\n : undefined;\n\n return (\n <Wrapper\n {...wrapperProps}\n ref={ref}\n className={classNames(\n linkProps?.className,\n className,\n handleBasicClasses({\n align,\n aspectRatio,\n prefix: CLASSNAME,\n size,\n theme,\n variant,\n isClickable,\n hasError,\n hasIconErrorFallback,\n hasCustomErrorFallback,\n isLoading,\n objectFit,\n hasBadge: !!badge,\n }),\n fillHeight && `${CLASSNAME}--fill-height`,\n )}\n >\n <span className={`${CLASSNAME}__background`}>\n <img\n // Use placeholder image size\n width={loadingPlaceholderImage?.naturalWidth}\n height={loadingPlaceholderImage?.naturalHeight}\n {...imgProps}\n style={{\n // Reserve space while loading (when possible)\n width: isLoading ? imgProps?.width || loadingPlaceholderImage?.naturalWidth : undefined,\n ...imgProps?.style,\n ...imageErrorStyle,\n ...focusPointStyle,\n ...loadingStyle,\n }}\n ref={useMergeRefs(setImgElement, propImgRef)}\n className={classNames(\n handleBasicClasses({\n prefix: `${CLASSNAME}__image`,\n isLoading,\n hasDefinedSize: Boolean(imgProps?.height && imgProps.width),\n }),\n imgProps?.className,\n )}\n crossOrigin={crossOrigin}\n src={image}\n alt={alt}\n loading={loading}\n />\n {!isLoading && hasError && (\n <span className={`${CLASSNAME}__fallback`}>\n {hasIconErrorFallback ? (\n <Icon icon={fallback as string} size={Size.xxs} theme={theme} />\n ) : (\n fallback\n )}\n </span>\n )}\n </span>\n {badge &&\n React.cloneElement(badge, { className: classNames(`${CLASSNAME}__badge`, badge.props.className) })}\n </Wrapper>\n );\n});\nThumbnail.displayName = COMPONENT_NAME;\nThumbnail.className = CLASSNAME;\nThumbnail.defaultProps = DEFAULT_PROPS;\n"],"names":["mdiImageBroken","getState","img","event","type","complete","getAttribute","useImageLoad","imageURL","imgRef","state","setState","useState","useEffect","undefined","update","addEventListener","removeEventListener","src","shiftPosition","scale","focusPoint","imageSize","containerSize","scaledSize","scaledFocusHeight","startFocus","shift","Math","floor","max","min","useFocusPointStyle","image","aspectRatio","imgProps","width","height","element","isLoaded","useMemo","AspectRatio","original","x","y","naturalWidth","naturalHeight","setContainerSize","updateContainerSize","cWidth","offsetWidth","cHeight","offsetHeight","oldContainerSize","requestAnimationFrame","style","visibility","heightScale","widthScale","focusPointFromTop","abs","focusPointFromLeft","objectPosition","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","fallback","loading","Thumbnail","forwardRef","props","ref","isAnyDisabled","otherProps","disabledStateProps","useDisableStateProps","defaultTheme","useTheme","Theme","light","align","alt","badge","className","crossOrigin","fillHeight","propImgRef","isLoading","isLoadingProp","objectFit","loadingPlaceholderImageRef","size","theme","variant","linkProps","linkAs","forwardedProps","imgElement","setImgElement","loadingState","hasError","focusPointStyle","hasIconErrorFallback","hasCustomErrorFallback","imageErrorStyle","display","isLink","Boolean","href","isClickable","onClick","Wrapper","RawClickable","wrapperProps","Object","assign","as","loadingPlaceholderImage","current","loadingStyle","backgroundImage","_jsxs","classNames","handleBasicClasses","prefix","hasBadge","children","_jsx","useMergeRefs","hasDefinedSize","Icon","icon","Size","xxs","React","cloneElement","displayName","defaultProps"],"mappings":"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"}
|
package/_internal/6589b796.js
DELETED
|
@@ -1,280 +0,0 @@
|
|
|
1
|
-
import kebabCase from 'lodash/kebabCase';
|
|
2
|
-
import React__default from 'react';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* The prefix to use for the CSS classes.
|
|
6
|
-
*/
|
|
7
|
-
const CSS_PREFIX = 'lumx';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Animation duration constants. Take into consideration that if you change one of these variables,
|
|
11
|
-
* you need to update their scss counterpart as well
|
|
12
|
-
*/
|
|
13
|
-
const DIALOG_TRANSITION_DURATION = 400;
|
|
14
|
-
const EXPANSION_PANEL_TRANSITION_DURATION = 400;
|
|
15
|
-
const NOTIFICATION_TRANSITION_DURATION = 200;
|
|
16
|
-
const SLIDESHOW_TRANSITION_DURATION = 5000;
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Delay on hover after which we open or close the tooltip.
|
|
20
|
-
* Only applies to devices supporting pointer hover.
|
|
21
|
-
*/
|
|
22
|
-
const TOOLTIP_HOVER_DELAY = {
|
|
23
|
-
open: 500,
|
|
24
|
-
close: 500
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Delay on long press after which we open or close the tooltip.
|
|
29
|
-
* Only applies to devices not supporting pointer hover.
|
|
30
|
-
*/
|
|
31
|
-
const TOOLTIP_LONG_PRESS_DELAY = {
|
|
32
|
-
open: 250,
|
|
33
|
-
close: 3000
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Alignments.
|
|
38
|
-
*/
|
|
39
|
-
const Alignment = {
|
|
40
|
-
bottom: 'bottom',
|
|
41
|
-
center: 'center',
|
|
42
|
-
end: 'end',
|
|
43
|
-
left: 'left',
|
|
44
|
-
right: 'right',
|
|
45
|
-
spaceAround: 'space-around',
|
|
46
|
-
spaceBetween: 'space-between',
|
|
47
|
-
spaceEvenly: 'space-evenly',
|
|
48
|
-
start: 'start',
|
|
49
|
-
top: 'top'
|
|
50
|
-
};
|
|
51
|
-
const Theme = {
|
|
52
|
-
light: 'light',
|
|
53
|
-
dark: 'dark'
|
|
54
|
-
};
|
|
55
|
-
const Size = {
|
|
56
|
-
xxs: 'xxs',
|
|
57
|
-
xs: 'xs',
|
|
58
|
-
s: 's',
|
|
59
|
-
m: 'm',
|
|
60
|
-
l: 'l',
|
|
61
|
-
xl: 'xl',
|
|
62
|
-
xxl: 'xxl',
|
|
63
|
-
tiny: 'tiny',
|
|
64
|
-
regular: 'regular',
|
|
65
|
-
medium: 'medium',
|
|
66
|
-
big: 'big',
|
|
67
|
-
huge: 'huge'
|
|
68
|
-
};
|
|
69
|
-
const Orientation = {
|
|
70
|
-
horizontal: 'horizontal',
|
|
71
|
-
vertical: 'vertical'
|
|
72
|
-
};
|
|
73
|
-
const Emphasis = {
|
|
74
|
-
low: 'low',
|
|
75
|
-
medium: 'medium',
|
|
76
|
-
high: 'high'
|
|
77
|
-
};
|
|
78
|
-
/**
|
|
79
|
-
* List of typographies that can't be customized.
|
|
80
|
-
*/
|
|
81
|
-
const TypographyInterface = {
|
|
82
|
-
overline: 'overline',
|
|
83
|
-
caption: 'caption',
|
|
84
|
-
body1: 'body1',
|
|
85
|
-
body2: 'body2',
|
|
86
|
-
subtitle1: 'subtitle1',
|
|
87
|
-
subtitle2: 'subtitle2',
|
|
88
|
-
title: 'title',
|
|
89
|
-
headline: 'headline',
|
|
90
|
-
display1: 'display1'
|
|
91
|
-
};
|
|
92
|
-
/**
|
|
93
|
-
* List of title typographies that can be customized (via CSS variables).
|
|
94
|
-
*/
|
|
95
|
-
const TypographyTitleCustom = {
|
|
96
|
-
title1: 'custom-title1',
|
|
97
|
-
title2: 'custom-title2',
|
|
98
|
-
title3: 'custom-title3',
|
|
99
|
-
title4: 'custom-title4',
|
|
100
|
-
title5: 'custom-title5',
|
|
101
|
-
title6: 'custom-title6'
|
|
102
|
-
};
|
|
103
|
-
/**
|
|
104
|
-
* List of typographies that can be customized (via CSS variables).
|
|
105
|
-
*/
|
|
106
|
-
const TypographyCustom = {
|
|
107
|
-
...TypographyTitleCustom,
|
|
108
|
-
intro: 'custom-intro',
|
|
109
|
-
'body-large': 'custom-body-large',
|
|
110
|
-
body: 'custom-body',
|
|
111
|
-
quote: 'custom-quote',
|
|
112
|
-
'publish-info': 'custom-publish-info',
|
|
113
|
-
button: 'custom-button'
|
|
114
|
-
};
|
|
115
|
-
/**
|
|
116
|
-
* List of all typographies.
|
|
117
|
-
*/
|
|
118
|
-
const Typography = {
|
|
119
|
-
...TypographyInterface,
|
|
120
|
-
custom: TypographyCustom
|
|
121
|
-
};
|
|
122
|
-
/**
|
|
123
|
-
* All available aspect ratios.
|
|
124
|
-
*/
|
|
125
|
-
const AspectRatio = {
|
|
126
|
-
/** Intrinsic content ratio. */
|
|
127
|
-
original: 'original',
|
|
128
|
-
/** Ratio 3:1 */
|
|
129
|
-
panoramic: 'panoramic',
|
|
130
|
-
/** Ratio 16:9 */
|
|
131
|
-
wide: 'wide',
|
|
132
|
-
/** Ratio 3:2 */
|
|
133
|
-
horizontal: 'horizontal',
|
|
134
|
-
/** Ratio 3:2 */
|
|
135
|
-
vertical: 'vertical',
|
|
136
|
-
/** Ratio 1:1 */
|
|
137
|
-
square: 'square',
|
|
138
|
-
/** Ratio constrained by the parent. */
|
|
139
|
-
free: 'free'
|
|
140
|
-
};
|
|
141
|
-
/**
|
|
142
|
-
* Semantic info about the purpose of the component
|
|
143
|
-
*/
|
|
144
|
-
const Kind = {
|
|
145
|
-
info: 'info',
|
|
146
|
-
success: 'success',
|
|
147
|
-
warning: 'warning',
|
|
148
|
-
error: 'error'
|
|
149
|
-
};
|
|
150
|
-
/**
|
|
151
|
-
* All available white-space values
|
|
152
|
-
* */
|
|
153
|
-
const WhiteSpace = {
|
|
154
|
-
normal: 'normal',
|
|
155
|
-
nowrap: 'nowrap',
|
|
156
|
-
pre: 'pre',
|
|
157
|
-
'pre-wrap': 'pre-wrap',
|
|
158
|
-
'pre-line': 'pre-line',
|
|
159
|
-
'break-spaces': 'break-spaces'
|
|
160
|
-
};
|
|
161
|
-
/**
|
|
162
|
-
* See SCSS variable $lumx-color-palette
|
|
163
|
-
*/
|
|
164
|
-
const ColorPalette = {
|
|
165
|
-
primary: 'primary',
|
|
166
|
-
secondary: 'secondary',
|
|
167
|
-
blue: 'blue',
|
|
168
|
-
dark: 'dark',
|
|
169
|
-
green: 'green',
|
|
170
|
-
yellow: 'yellow',
|
|
171
|
-
red: 'red',
|
|
172
|
-
light: 'light',
|
|
173
|
-
grey: 'grey'
|
|
174
|
-
};
|
|
175
|
-
/**
|
|
176
|
-
* See SCSS variable $lumx-color-variants
|
|
177
|
-
*/
|
|
178
|
-
const ColorVariant = {
|
|
179
|
-
D1: 'D1',
|
|
180
|
-
D2: 'D2',
|
|
181
|
-
L1: 'L1',
|
|
182
|
-
L2: 'L2',
|
|
183
|
-
L3: 'L3',
|
|
184
|
-
L4: 'L4',
|
|
185
|
-
L5: 'L5',
|
|
186
|
-
L6: 'L6',
|
|
187
|
-
N: 'N'
|
|
188
|
-
};
|
|
189
|
-
|
|
190
|
-
/** ColorPalette with all possible color variant combination */
|
|
191
|
-
|
|
192
|
-
var classnames = {exports: {}};
|
|
193
|
-
|
|
194
|
-
/*!
|
|
195
|
-
Copyright (c) 2018 Jed Watson.
|
|
196
|
-
Licensed under the MIT License (MIT), see
|
|
197
|
-
http://jedwatson.github.io/classnames
|
|
198
|
-
*/
|
|
199
|
-
|
|
200
|
-
(function (module) {
|
|
201
|
-
/* global define */
|
|
202
|
-
|
|
203
|
-
(function () {
|
|
204
|
-
|
|
205
|
-
var hasOwn = {}.hasOwnProperty;
|
|
206
|
-
|
|
207
|
-
function classNames() {
|
|
208
|
-
var classes = [];
|
|
209
|
-
|
|
210
|
-
for (var i = 0; i < arguments.length; i++) {
|
|
211
|
-
var arg = arguments[i];
|
|
212
|
-
if (!arg) continue;
|
|
213
|
-
|
|
214
|
-
var argType = typeof arg;
|
|
215
|
-
|
|
216
|
-
if (argType === 'string' || argType === 'number') {
|
|
217
|
-
classes.push(arg);
|
|
218
|
-
} else if (Array.isArray(arg)) {
|
|
219
|
-
if (arg.length) {
|
|
220
|
-
var inner = classNames.apply(null, arg);
|
|
221
|
-
if (inner) {
|
|
222
|
-
classes.push(inner);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
} else if (argType === 'object') {
|
|
226
|
-
if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {
|
|
227
|
-
classes.push(arg.toString());
|
|
228
|
-
continue;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
for (var key in arg) {
|
|
232
|
-
if (hasOwn.call(arg, key) && arg[key]) {
|
|
233
|
-
classes.push(key);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
return classes.join(' ');
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
if (module.exports) {
|
|
243
|
-
classNames.default = classNames;
|
|
244
|
-
module.exports = classNames;
|
|
245
|
-
} else {
|
|
246
|
-
window.classNames = classNames;
|
|
247
|
-
}
|
|
248
|
-
}());
|
|
249
|
-
}(classnames));
|
|
250
|
-
|
|
251
|
-
var classNames = classnames.exports;
|
|
252
|
-
|
|
253
|
-
// See https://regex101.com/r/YjS1uI/3
|
|
254
|
-
const LAST_PART_CLASSNAME = /^(.*)-(.+)$/gi;
|
|
255
|
-
|
|
256
|
-
/**
|
|
257
|
-
* Get the name of the root CSS class of a component based on its name.
|
|
258
|
-
*
|
|
259
|
-
* @param componentName The name of the component. This name should contains the component prefix and be
|
|
260
|
-
* written in PascalCase.
|
|
261
|
-
* @param subComponent Whether the current component is a sub component, if true, define the class according
|
|
262
|
-
* to BEM standards.
|
|
263
|
-
* @return The name of the root CSS class. This classname include the CSS classname prefix and is written in
|
|
264
|
-
* lower-snake-case.
|
|
265
|
-
*/
|
|
266
|
-
function getRootClassName(componentName, subComponent) {
|
|
267
|
-
const formattedClassName = `${CSS_PREFIX}-${kebabCase(componentName)}`;
|
|
268
|
-
if (subComponent) {
|
|
269
|
-
return formattedClassName.replace(LAST_PART_CLASSNAME, '$1__$2');
|
|
270
|
-
}
|
|
271
|
-
return formattedClassName;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
/**
|
|
275
|
-
* React.forwardRef but re-typed to attach some custom metadata on our components.
|
|
276
|
-
*/
|
|
277
|
-
const forwardRef = React__default.forwardRef;
|
|
278
|
-
|
|
279
|
-
export { Alignment as A, CSS_PREFIX as C, DIALOG_TRANSITION_DURATION as D, EXPANSION_PANEL_TRANSITION_DURATION as E, Kind as K, NOTIFICATION_TRANSITION_DURATION as N, Orientation as O, SLIDESHOW_TRANSITION_DURATION as S, TOOLTIP_HOVER_DELAY as T, WhiteSpace as W, TOOLTIP_LONG_PRESS_DELAY as a, Theme as b, Size as c, Emphasis as d, TypographyInterface as e, TypographyTitleCustom as f, TypographyCustom as g, Typography as h, AspectRatio as i, ColorPalette as j, ColorVariant as k, classNames as l, getRootClassName as m, forwardRef as n };
|
|
280
|
-
//# sourceMappingURL=6589b796.js.map
|