@hitachivantara/uikit-react-core 5.18.0 → 5.18.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/Accordion/Accordion.cjs +1 -1
- package/dist/cjs/components/Accordion/Accordion.cjs.map +1 -1
- package/dist/cjs/components/AppSwitcher/AppSwitcher.cjs +2 -5
- package/dist/cjs/components/AppSwitcher/AppSwitcher.cjs.map +1 -1
- package/dist/cjs/components/BaseInput/BaseInput.cjs +1 -1
- package/dist/cjs/components/BaseInput/BaseInput.cjs.map +1 -1
- package/dist/cjs/components/Box/Box.cjs +2 -2
- package/dist/cjs/components/Box/Box.cjs.map +1 -1
- package/dist/cjs/components/Button/Button.cjs +1 -1
- package/dist/cjs/components/Button/Button.cjs.map +1 -1
- package/dist/cjs/components/Button/Button.styles.cjs +6 -5
- package/dist/cjs/components/Button/Button.styles.cjs.map +1 -1
- package/dist/cjs/components/Carousel/Carousel.cjs +8 -8
- package/dist/cjs/components/Carousel/Carousel.cjs.map +1 -1
- package/dist/cjs/components/ColorPicker/Fields/Fields.cjs +8 -8
- package/dist/cjs/components/ColorPicker/Fields/Fields.cjs.map +1 -1
- package/dist/cjs/components/ColorPicker/Picker/Picker.cjs +2 -2
- package/dist/cjs/components/ColorPicker/Picker/Picker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs +2 -2
- package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Dialog.cjs +1 -1
- package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -1
- package/dist/cjs/components/DotPagination/DotPagination.cjs +19 -13
- package/dist/cjs/components/DotPagination/DotPagination.cjs.map +1 -1
- package/dist/cjs/components/DotPagination/DotPagination.styles.cjs +20 -67
- package/dist/cjs/components/DotPagination/DotPagination.styles.cjs.map +1 -1
- package/dist/cjs/components/DropDownMenu/DropDownMenu.styles.cjs +1 -0
- package/dist/cjs/components/DropDownMenu/DropDownMenu.styles.cjs.map +1 -1
- package/dist/cjs/components/Dropdown/List/List.cjs +1 -1
- package/dist/cjs/components/Dropdown/List/List.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs +1 -1
- package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs.map +1 -1
- package/dist/cjs/components/Forms/Suggestions/Suggestions.cjs +16 -13
- package/dist/cjs/components/Forms/Suggestions/Suggestions.cjs.map +1 -1
- package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.cjs +26 -15
- package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.cjs.map +1 -1
- package/dist/cjs/components/Input/Input.cjs +83 -75
- package/dist/cjs/components/Input/Input.cjs.map +1 -1
- package/dist/cjs/components/ListContainer/ListItem/ListItem.cjs +2 -2
- package/dist/cjs/components/ListContainer/ListItem/ListItem.cjs.map +1 -1
- package/dist/cjs/components/MultiButton/MultiButton.styles.cjs +10 -10
- package/dist/cjs/components/MultiButton/MultiButton.styles.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.styles.cjs +1 -3
- package/dist/cjs/components/Pagination/Pagination.styles.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/useScrollTo.cjs.map +1 -1
- package/dist/cjs/components/Slider/Slider.cjs +1 -1
- package/dist/cjs/components/Slider/Slider.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/Snackbar.cjs +9 -14
- package/dist/cjs/components/Snackbar/Snackbar.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/Snackbar.styles.cjs +38 -29
- package/dist/cjs/components/Snackbar/Snackbar.styles.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.cjs +22 -18
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.cjs +37 -89
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.cjs +34 -64
- package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.styles.cjs +28 -0
- package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.styles.cjs.map +1 -0
- package/dist/cjs/components/Table/TableCell/TableCell.cjs +6 -3
- package/dist/cjs/components/Table/TableCell/TableCell.cjs.map +1 -1
- package/dist/cjs/components/Table/TableRow/TableRow.cjs +9 -6
- package/dist/cjs/components/Table/TableRow/TableRow.cjs.map +1 -1
- package/dist/cjs/components/TagsInput/TagsInput.cjs +1 -1
- package/dist/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
- package/dist/cjs/components/TextArea/TextArea.cjs +45 -43
- package/dist/cjs/components/TextArea/TextArea.cjs.map +1 -1
- package/dist/cjs/components/Typography/Typography.cjs +20 -133
- package/dist/cjs/components/Typography/Typography.cjs.map +1 -1
- package/dist/cjs/components/Typography/Typography.styles.cjs +107 -0
- package/dist/cjs/components/Typography/Typography.styles.cjs.map +1 -0
- package/dist/cjs/components/Typography/utils.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Header/Header.cjs +1 -1
- package/dist/cjs/components/VerticalNavigation/Header/Header.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs +7 -7
- package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.cjs +5 -5
- package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/TreeView/descendants.cjs +1 -4
- package/dist/cjs/components/VerticalNavigation/TreeView/descendants.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs +5 -5
- package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs.map +1 -1
- package/dist/cjs/hooks/useWidth.cjs.map +1 -1
- package/dist/cjs/index.cjs +13 -10
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/providers/ThemeProvider.cjs +20 -18
- package/dist/cjs/providers/ThemeProvider.cjs.map +1 -1
- package/dist/esm/components/Accordion/Accordion.js +1 -1
- package/dist/esm/components/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/AppSwitcher/AppSwitcher.js +2 -5
- package/dist/esm/components/AppSwitcher/AppSwitcher.js.map +1 -1
- package/dist/esm/components/BaseInput/BaseInput.js +1 -1
- package/dist/esm/components/BaseInput/BaseInput.js.map +1 -1
- package/dist/esm/components/Box/Box.js +2 -2
- package/dist/esm/components/Box/Box.js.map +1 -1
- package/dist/esm/components/Button/Button.js +1 -1
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Button/Button.styles.js +6 -5
- package/dist/esm/components/Button/Button.styles.js.map +1 -1
- package/dist/esm/components/Carousel/Carousel.js +9 -9
- package/dist/esm/components/Carousel/Carousel.js.map +1 -1
- package/dist/esm/components/ColorPicker/Fields/Fields.js +8 -8
- package/dist/esm/components/ColorPicker/Fields/Fields.js.map +1 -1
- package/dist/esm/components/ColorPicker/Picker/Picker.js +2 -2
- package/dist/esm/components/ColorPicker/Picker/Picker.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +2 -2
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.js +1 -1
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/DotPagination/DotPagination.js +22 -15
- package/dist/esm/components/DotPagination/DotPagination.js.map +1 -1
- package/dist/esm/components/DotPagination/DotPagination.styles.js +20 -65
- package/dist/esm/components/DotPagination/DotPagination.styles.js.map +1 -1
- package/dist/esm/components/DropDownMenu/DropDownMenu.styles.js +1 -0
- package/dist/esm/components/DropDownMenu/DropDownMenu.styles.js.map +1 -1
- package/dist/esm/components/Dropdown/List/List.js +1 -1
- package/dist/esm/components/Dropdown/List/List.js.map +1 -1
- package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js +1 -1
- package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js.map +1 -1
- package/dist/esm/components/Forms/Suggestions/Suggestions.js +17 -14
- package/dist/esm/components/Forms/Suggestions/Suggestions.js.map +1 -1
- package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.js +26 -15
- package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
- package/dist/esm/components/Input/Input.js +84 -76
- package/dist/esm/components/Input/Input.js.map +1 -1
- package/dist/esm/components/ListContainer/ListItem/ListItem.js +2 -2
- package/dist/esm/components/ListContainer/ListItem/ListItem.js.map +1 -1
- package/dist/esm/components/MultiButton/MultiButton.styles.js +10 -10
- package/dist/esm/components/MultiButton/MultiButton.styles.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.styles.js +1 -3
- package/dist/esm/components/Pagination/Pagination.styles.js.map +1 -1
- package/dist/esm/components/ScrollTo/useScrollTo.js.map +1 -1
- package/dist/esm/components/Slider/Slider.js +2 -2
- package/dist/esm/components/Slider/Slider.js.map +1 -1
- package/dist/esm/components/Snackbar/Snackbar.js +12 -16
- package/dist/esm/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/esm/components/Snackbar/Snackbar.styles.js +38 -26
- package/dist/esm/components/Snackbar/Snackbar.styles.js.map +1 -1
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.js +21 -18
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.js.map +1 -1
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.js +37 -86
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.js.map +1 -1
- package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.js +35 -62
- package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.js.map +1 -1
- package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.styles.js +28 -0
- package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.styles.js.map +1 -0
- package/dist/esm/components/Table/TableCell/TableCell.js +6 -3
- package/dist/esm/components/Table/TableCell/TableCell.js.map +1 -1
- package/dist/esm/components/Table/TableRow/TableRow.js +9 -6
- package/dist/esm/components/Table/TableRow/TableRow.js.map +1 -1
- package/dist/esm/components/TagsInput/TagsInput.js +1 -1
- package/dist/esm/components/TagsInput/TagsInput.js.map +1 -1
- package/dist/esm/components/TextArea/TextArea.js +46 -44
- package/dist/esm/components/TextArea/TextArea.js.map +1 -1
- package/dist/esm/components/Typography/Typography.js +23 -133
- package/dist/esm/components/Typography/Typography.js.map +1 -1
- package/dist/esm/components/Typography/Typography.styles.js +107 -0
- package/dist/esm/components/Typography/Typography.styles.js.map +1 -0
- package/dist/esm/components/Typography/utils.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Header/Header.js +1 -1
- package/dist/esm/components/VerticalNavigation/Header/Header.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js +7 -7
- package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.js +5 -5
- package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/TreeView/descendants.js +1 -4
- package/dist/esm/components/VerticalNavigation/TreeView/descendants.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/VerticalNavigation.js +6 -6
- package/dist/esm/components/VerticalNavigation/VerticalNavigation.js.map +1 -1
- package/dist/esm/hooks/useWidth.js.map +1 -1
- package/dist/esm/index.js +270 -267
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/providers/ThemeProvider.js +21 -19
- package/dist/esm/providers/ThemeProvider.js.map +1 -1
- package/dist/types/index.d.ts +265 -204
- package/package.json +3 -3
- package/dist/cjs/components/DotPagination/dotPaginationClasses.cjs +0 -8
- package/dist/cjs/components/DotPagination/dotPaginationClasses.cjs.map +0 -1
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.cjs +0 -8
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.cjs.map +0 -1
- package/dist/cjs/components/Snackbar/snackbarClasses.cjs +0 -8
- package/dist/cjs/components/Snackbar/snackbarClasses.cjs.map +0 -1
- package/dist/cjs/components/Typography/typographyClasses.cjs +0 -8
- package/dist/cjs/components/Typography/typographyClasses.cjs.map +0 -1
- package/dist/esm/components/DotPagination/dotPaginationClasses.js +0 -8
- package/dist/esm/components/DotPagination/dotPaginationClasses.js.map +0 -1
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.js +0 -8
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.js.map +0 -1
- package/dist/esm/components/Snackbar/snackbarClasses.js +0 -8
- package/dist/esm/components/Snackbar/snackbarClasses.js.map +0 -1
- package/dist/esm/components/Typography/typographyClasses.js +0 -8
- package/dist/esm/components/Typography/typographyClasses.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.js","sources":["../../../../src/components/Carousel/Carousel.tsx"],"sourcesContent":["import React, {\n CSSProperties,\n Children,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport useCarousel, { EmblaOptionsType } from \"embla-carousel-react\";\nimport {\n Backwards,\n Forwards,\n Close,\n Fullscreen,\n} from \"@hitachivantara/uikit-react-icons\";\nimport { HvButton, HvContainer, HvStack, HvTypography } from \"@core/components\";\nimport { HvBaseProps } from \"@core/types\";\nimport { ExtractNames } from \"@core/utils\";\n\nimport { staticClasses, useClasses } from \"./Carousel.styles\";\n\nconst clamp = (num: number, max: number, min = 0) =>\n Math.min(Math.max(num, min), max);\n\nexport { staticClasses as carouselClasses };\n\nexport type HvCarouselClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvCarouselProps\n extends HvBaseProps<HTMLDivElement, \"title\" | \"onChange\"> {\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvCarouselClasses;\n /** Height of the Slider container. If `undefined`, images will keep a 16/9 aspect-ratio */\n height?: CSSProperties[\"height\"];\n /** Width of the thumbnail. Height will try to maintain a 16/9 aspect-ratio */\n thumbnailWidth?: CSSProperties[\"width\"];\n /** Title of the carousel */\n title?: React.ReactNode;\n /** Content slides to be displayed. @see `<HvCarouselSlide />` */\n children?: React.ReactNode;\n /** Custom content to render in the actions area */\n actions?: React.ReactNode;\n /** Whether Carousel is in \"xs mode\" - to use in embedded contexts */\n xs?: boolean;\n /** Whether to show dots instead of arrow pagination. Defaults to true under 5 elements */\n showDots?: boolean;\n /** Whether to show the counter on the top-right corner of the active slide */\n showCounter?: boolean;\n /** Whether to show the back/forwards buttons over the active slide */\n showSlideControls?: boolean;\n /** Whether to enable the fullscreen toggle button */\n showFullscreen?: boolean;\n /** Whether to hide the thumbnails. Hidden by default in \"xs\" mode */\n hideThumbnails?: boolean;\n /** Carousel configuration options. @see https://www.embla-carousel.com/api/options/ */\n carouselOptions?: EmblaOptionsType;\n /** */\n renderThumbnail?: (index: number) => React.ReactNode;\n /** The callback fired when the active slide changes. */\n onChange?: (index: number) => void;\n}\n\n/**\n * A Carousel is commonly used to browse images, it can also be used to browse any kind of content like text, video, or charts.\n * It allows you to focus on a particular content while having a notion of how many you have to explore.\n */\nexport const HvCarousel = (props: HvCarouselProps) => {\n const {\n className,\n classes: classesProp,\n height: heightProp = \"auto\",\n thumbnailWidth = 90,\n title,\n children,\n actions,\n xs,\n showDots: showDotsProp,\n showCounter: showCounterProp,\n showSlideControls,\n showFullscreen: showFullscreenProp,\n hideThumbnails: hideThumbnailsProp,\n carouselOptions,\n renderThumbnail,\n onChange,\n ...others\n } = props;\n const { classes, cx } = useClasses(classesProp);\n const thumbnailsRef = useRef<HTMLDivElement>(null);\n const [isFullscreen, setIsFullscreen] = useState(false);\n\n const [containerRef, controller] = useCarousel({\n align: \"start\",\n loop: true,\n ...carouselOptions,\n });\n\n const [selectedIndex, setSelectedIndex] = useState(\n carouselOptions?.startIndex ?? 0\n );\n\n const numSlides = Children.count(children);\n\n const handlePrevious = () => {\n controller?.scrollPrev();\n };\n\n const handleNext = () => {\n controller?.scrollNext();\n };\n\n const handleScroll = (index: number) => {\n controller?.scrollTo(index);\n };\n\n const handleSelect = () => {\n if (!controller) return;\n\n const slideIndex = controller.selectedScrollSnap();\n setSelectedIndex(slideIndex);\n\n // scroll to thumbnail button\n thumbnailsRef.current\n ?.querySelectorAll(\"button\")\n ?.[slideIndex]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n\n onChange?.(slideIndex);\n };\n\n useEffect(() => {\n if (!controller) return;\n\n controller.on(\"select\", handleSelect);\n\n return () => {\n controller.off(\"select\", handleSelect);\n };\n }, [controller]);\n\n useEffect(() => {\n if (!controller) return;\n\n controller.reInit();\n setSelectedIndex((currentIndex) => clamp(currentIndex, numSlides, 0));\n }, [numSlides]);\n\n const canPrev = controller?.canScrollPrev() ?? false;\n const canNext = controller?.canScrollNext() ?? false;\n const showTitle = !!title && (!xs || isFullscreen);\n const showFullscreen = showFullscreenProp ?? xs;\n const height = isFullscreen ? \"100%\" : heightProp ?? \"auto\";\n const showCounter = xs;\n const hideThumbnails = hideThumbnailsProp ?? (xs && !isFullscreen);\n const showThumbnails = !hideThumbnails && !!renderThumbnail;\n const showDots = showDotsProp ?? numSlides <= 5;\n\n return (\n <HvContainer\n className={cx(classes.root, className, {\n [classes.xs]: xs,\n [classes.fullscreen]: isFullscreen,\n })}\n {...others}\n >\n {showTitle && (\n <HvTypography variant=\"title2\" className={classes.title}>\n {title}\n </HvTypography>\n )}\n <div className={classes.actions}>\n {showFullscreen && (\n <HvButton\n icon\n variant=\"secondaryGhost\"\n onClick={() => setIsFullscreen((curr) => !curr)}\n className={classes.closeButton}\n >\n {isFullscreen ? (\n <Close aria-label=\"Close\" />\n ) : (\n <Fullscreen aria-label=\"Fullscreen\" />\n )}\n </HvButton>\n )}\n {actions}\n </div>\n\n <div className={classes.mainContainer}>\n <div className={classes.controls}>\n {showDots ? (\n <div className={classes.dots}>\n {Array.from(Array(numSlides)).map((el, index) => (\n <span\n key={`circle-${index}`}\n className={cx(classes.dot, {\n [classes.dotSelected]: index === selectedIndex,\n })}\n />\n ))}\n </div>\n ) : (\n <>\n <HvButton\n icon\n disabled={!canPrev}\n variant=\"secondaryGhost\"\n aria-label=\"Backwards\"\n onClick={handlePrevious}\n >\n <Backwards iconSize=\"XS\" />\n </HvButton>\n <div className={classes.pageCounter}>\n {`${selectedIndex + 1} / ${numSlides}`}\n </div>\n <HvButton\n icon\n disabled={!canNext}\n variant=\"secondaryGhost\"\n aria-label=\"Forwards\"\n onClick={handleNext}\n >\n <Forwards iconSize=\"XS\" />\n </HvButton>\n </>\n )}\n </div>\n\n <div\n className={cx(classes.main, {\n [classes.mainXs]: xs,\n [classes.mainFullscreen]: isFullscreen,\n })}\n >\n {showCounter && (\n <div className={classes.counterContainer}>\n <span className={classes.counter}>\n {`${selectedIndex + 1}/${numSlides}`}\n </span>\n </div>\n )}\n\n {showSlideControls && (\n <div className={classes.slideControls}>\n <HvButton\n icon\n disabled={!canPrev}\n variant=\"secondary\"\n aria-label=\"Backwards\"\n onClick={handlePrevious}\n >\n <Backwards iconSize=\"XS\" />\n </HvButton>\n <HvButton\n icon\n disabled={!canNext}\n variant=\"secondary\"\n aria-label=\"Forwards\"\n onClick={handleNext}\n >\n <Forwards iconSize=\"XS\" />\n </HvButton>\n </div>\n )}\n\n <div\n ref={containerRef}\n style={{ height }}\n className={classes.slidesViewport}\n >\n <div className={classes.slidesContainer}>{children}</div>\n </div>\n </div>\n </div>\n\n {showThumbnails && (\n <div ref={thumbnailsRef} className={classes.panel}>\n <HvStack direction=\"row\" spacing=\"xs\">\n {Array.from(Array(numSlides)).map((doc, i) => (\n <HvButton\n icon\n variant=\"secondaryGhost\"\n key={`button-${i}`}\n style={{ width: thumbnailWidth }}\n className={cx(classes.thumbnail, {\n [classes.thumbnailSelected]: i === selectedIndex,\n })}\n onClick={() => handleScroll(i)}\n >\n {renderThumbnail(i)}\n </HvButton>\n ))}\n </HvStack>\n </div>\n )}\n </HvContainer>\n );\n};\n"],"names":["clamp","num","max","min","Math","HvCarousel","props","className","classes","classesProp","height","heightProp","thumbnailWidth","title","children","actions","xs","showDots","showDotsProp","showCounter","showCounterProp","showSlideControls","showFullscreen","showFullscreenProp","hideThumbnails","hideThumbnailsProp","carouselOptions","renderThumbnail","onChange","others","cx","useClasses","thumbnailsRef","useRef","isFullscreen","setIsFullscreen","useState","containerRef","controller","useCarousel","align","loop","selectedIndex","setSelectedIndex","startIndex","numSlides","Children","count","handlePrevious","scrollPrev","handleNext","scrollNext","handleScroll","index","scrollTo","handleSelect","slideIndex","selectedScrollSnap","current","querySelectorAll","scrollIntoView","behavior","block","useEffect","on","off","reInit","currentIndex","canPrev","canScrollPrev","canNext","canScrollNext","showTitle","showThumbnails","HvContainer","root","fullscreen","_jsx","HvTypography","variant","_jsxs","HvButton","icon","onClick","curr","closeButton","Close","Fullscreen","mainContainer","controls","dots","Array","from","map","el","dot","dotSelected","_Fragment","disabled","Backwards","iconSize","pageCounter","Forwards","main","mainXs","mainFullscreen","counterContainer","counter","slideControls","ref","style","slidesViewport","slidesContainer","panel","HvStack","direction","spacing","doc","i","width","thumbnail","thumbnailSelected"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Carousel.js","sources":["../../../../src/components/Carousel/Carousel.tsx"],"sourcesContent":["import React, {\n CSSProperties,\n Children,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport useCarousel, { EmblaOptionsType } from \"embla-carousel-react\";\nimport {\n Backwards,\n Forwards,\n Close,\n Fullscreen,\n} from \"@hitachivantara/uikit-react-icons\";\nimport { HvButton, HvContainer, HvStack, HvTypography } from \"@core/components\";\nimport { HvBaseProps } from \"@core/types\";\nimport { ExtractNames } from \"@core/utils\";\n\nimport { staticClasses, useClasses } from \"./Carousel.styles\";\n\nconst clamp = (num: number, max: number, min = 0) =>\n Math.min(Math.max(num, min), max);\n\nexport { staticClasses as carouselClasses };\n\nexport type HvCarouselClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvCarouselProps\n extends HvBaseProps<HTMLDivElement, \"title\" | \"onChange\"> {\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvCarouselClasses;\n /** Height of the Slider container. If `undefined`, images will keep a 16/9 aspect-ratio */\n height?: CSSProperties[\"height\"];\n /** Width of the thumbnail. Height will try to maintain a 16/9 aspect-ratio */\n thumbnailWidth?: CSSProperties[\"width\"];\n /** Title of the carousel */\n title?: React.ReactNode;\n /** Content slides to be displayed. @see `<HvCarouselSlide />` */\n children?: React.ReactNode;\n /** Custom content to render in the actions area */\n actions?: React.ReactNode;\n /** Whether Carousel is in \"xs mode\" - to use in embedded contexts */\n xs?: boolean;\n /** Whether to show dots instead of arrow pagination. Defaults to true under 5 elements */\n showDots?: boolean;\n /** Whether to show the counter on the top-right corner of the active slide */\n showCounter?: boolean;\n /** Whether to show the back/forwards buttons over the active slide */\n showSlideControls?: boolean;\n /** Whether to enable the fullscreen toggle button */\n showFullscreen?: boolean;\n /** Whether to hide the thumbnails. Hidden by default in \"xs\" mode */\n hideThumbnails?: boolean;\n /** Carousel configuration options. @see https://www.embla-carousel.com/api/options/ */\n carouselOptions?: EmblaOptionsType;\n /** */\n renderThumbnail?: (index: number) => React.ReactNode;\n /** The callback fired when the active slide changes. */\n onChange?: (index: number) => void;\n}\n\n/**\n * A Carousel is commonly used to browse images, it can also be used to browse any kind of content like text, video, or charts.\n * It allows you to focus on a particular content while having a notion of how many you have to explore.\n */\nexport const HvCarousel = (props: HvCarouselProps) => {\n const {\n className,\n classes: classesProp,\n height: heightProp = \"auto\",\n thumbnailWidth = 90,\n title,\n children,\n actions,\n xs,\n showDots: showDotsProp,\n showCounter: showCounterProp,\n showSlideControls,\n showFullscreen: showFullscreenProp,\n hideThumbnails: hideThumbnailsProp,\n carouselOptions,\n renderThumbnail,\n onChange,\n ...others\n } = props;\n const { classes, cx } = useClasses(classesProp);\n const thumbnailsRef = useRef<HTMLDivElement>(null);\n const [isFullscreen, setIsFullscreen] = useState(false);\n\n const [containerRef, controller] = useCarousel({\n align: \"start\",\n loop: true,\n ...carouselOptions,\n });\n\n const [selectedIndex, setSelectedIndex] = useState(\n carouselOptions?.startIndex ?? 0\n );\n\n const numSlides = Children.count(children);\n\n const handlePrevious = useCallback(() => {\n controller?.scrollPrev();\n }, [controller]);\n\n const handleNext = useCallback(() => {\n controller?.scrollNext();\n }, [controller]);\n\n const handleScroll = (index: number) => {\n controller?.scrollTo(index);\n };\n\n const handleSelect = useCallback(() => {\n if (!controller) return;\n\n const slideIndex = controller.selectedScrollSnap();\n setSelectedIndex(slideIndex);\n\n // scroll to thumbnail button\n thumbnailsRef.current\n ?.querySelectorAll(\"button\")\n ?.[slideIndex]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n\n onChange?.(slideIndex);\n }, [controller, onChange]);\n\n useEffect(() => {\n if (!controller) return;\n\n controller.on(\"select\", handleSelect);\n\n return () => {\n controller.off(\"select\", handleSelect);\n };\n }, [controller, handleSelect]);\n\n useEffect(() => {\n if (!controller) return;\n\n controller.reInit();\n setSelectedIndex((currentIndex) => clamp(currentIndex, numSlides, 0));\n }, [numSlides, controller]);\n\n const canPrev = controller?.canScrollPrev() ?? false;\n const canNext = controller?.canScrollNext() ?? false;\n const showTitle = !!title && (!xs || isFullscreen);\n const showFullscreen = showFullscreenProp ?? xs;\n const height = isFullscreen ? \"100%\" : heightProp ?? \"auto\";\n const showCounter = xs;\n const hideThumbnails = hideThumbnailsProp ?? (xs && !isFullscreen);\n const showThumbnails = !hideThumbnails && !!renderThumbnail;\n const showDots = showDotsProp ?? numSlides <= 5;\n\n return (\n <HvContainer\n className={cx(classes.root, className, {\n [classes.xs]: xs,\n [classes.fullscreen]: isFullscreen,\n })}\n {...others}\n >\n {showTitle && (\n <HvTypography variant=\"title2\" className={classes.title}>\n {title}\n </HvTypography>\n )}\n <div className={classes.actions}>\n {showFullscreen && (\n <HvButton\n icon\n variant=\"secondaryGhost\"\n onClick={() => setIsFullscreen((curr) => !curr)}\n className={classes.closeButton}\n >\n {isFullscreen ? (\n <Close aria-label=\"Close\" />\n ) : (\n <Fullscreen aria-label=\"Fullscreen\" />\n )}\n </HvButton>\n )}\n {actions}\n </div>\n\n <div className={classes.mainContainer}>\n <div className={classes.controls}>\n {showDots ? (\n <div className={classes.dots}>\n {Array.from(Array(numSlides)).map((el, index) => (\n <span\n key={`circle-${index}`}\n className={cx(classes.dot, {\n [classes.dotSelected]: index === selectedIndex,\n })}\n />\n ))}\n </div>\n ) : (\n <>\n <HvButton\n icon\n disabled={!canPrev}\n variant=\"secondaryGhost\"\n aria-label=\"Backwards\"\n onClick={handlePrevious}\n >\n <Backwards iconSize=\"XS\" />\n </HvButton>\n <div className={classes.pageCounter}>\n {`${selectedIndex + 1} / ${numSlides}`}\n </div>\n <HvButton\n icon\n disabled={!canNext}\n variant=\"secondaryGhost\"\n aria-label=\"Forwards\"\n onClick={handleNext}\n >\n <Forwards iconSize=\"XS\" />\n </HvButton>\n </>\n )}\n </div>\n\n <div\n className={cx(classes.main, {\n [classes.mainXs]: xs,\n [classes.mainFullscreen]: isFullscreen,\n })}\n >\n {showCounter && (\n <div className={classes.counterContainer}>\n <span className={classes.counter}>\n {`${selectedIndex + 1}/${numSlides}`}\n </span>\n </div>\n )}\n\n {showSlideControls && (\n <div className={classes.slideControls}>\n <HvButton\n icon\n disabled={!canPrev}\n variant=\"secondary\"\n aria-label=\"Backwards\"\n onClick={handlePrevious}\n >\n <Backwards iconSize=\"XS\" />\n </HvButton>\n <HvButton\n icon\n disabled={!canNext}\n variant=\"secondary\"\n aria-label=\"Forwards\"\n onClick={handleNext}\n >\n <Forwards iconSize=\"XS\" />\n </HvButton>\n </div>\n )}\n\n <div\n ref={containerRef}\n style={{ height }}\n className={classes.slidesViewport}\n >\n <div className={classes.slidesContainer}>{children}</div>\n </div>\n </div>\n </div>\n\n {showThumbnails && (\n <div ref={thumbnailsRef} className={classes.panel}>\n <HvStack direction=\"row\" spacing=\"xs\">\n {Array.from(Array(numSlides)).map((doc, i) => (\n <HvButton\n icon\n variant=\"secondaryGhost\"\n key={`button-${i}`}\n style={{ width: thumbnailWidth }}\n className={cx(classes.thumbnail, {\n [classes.thumbnailSelected]: i === selectedIndex,\n })}\n onClick={() => handleScroll(i)}\n >\n {renderThumbnail(i)}\n </HvButton>\n ))}\n </HvStack>\n </div>\n )}\n </HvContainer>\n );\n};\n"],"names":["clamp","num","max","min","Math","HvCarousel","props","className","classes","classesProp","height","heightProp","thumbnailWidth","title","children","actions","xs","showDots","showDotsProp","showCounter","showCounterProp","showSlideControls","showFullscreen","showFullscreenProp","hideThumbnails","hideThumbnailsProp","carouselOptions","renderThumbnail","onChange","others","cx","useClasses","thumbnailsRef","useRef","isFullscreen","setIsFullscreen","useState","containerRef","controller","useCarousel","align","loop","selectedIndex","setSelectedIndex","startIndex","numSlides","Children","count","handlePrevious","useCallback","scrollPrev","handleNext","scrollNext","handleScroll","index","scrollTo","handleSelect","slideIndex","selectedScrollSnap","current","querySelectorAll","scrollIntoView","behavior","block","useEffect","on","off","reInit","currentIndex","canPrev","canScrollPrev","canNext","canScrollNext","showTitle","showThumbnails","HvContainer","root","fullscreen","_jsx","HvTypography","variant","_jsxs","HvButton","icon","onClick","curr","closeButton","Close","Fullscreen","mainContainer","controls","dots","Array","from","map","el","dot","dotSelected","_Fragment","disabled","Backwards","iconSize","pageCounter","Forwards","main","mainXs","mainFullscreen","counterContainer","counter","slideControls","ref","style","slidesViewport","slidesContainer","panel","HvStack","direction","spacing","doc","i","width","thumbnail","thumbnailSelected"],"mappings":"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"}
|
|
@@ -19,10 +19,10 @@ const Fields = ({
|
|
|
19
19
|
const [internalRed, setInternalRed] = useState(rgb == null ? void 0 : rgb.r);
|
|
20
20
|
const [internalGreen, setInternalGreen] = useState(rgb == null ? void 0 : rgb.g);
|
|
21
21
|
const [internalBlue, setInternalBlue] = useState(rgb == null ? void 0 : rgb.b);
|
|
22
|
-
const hexInputRef = useRef();
|
|
23
|
-
const redInputRef = useRef();
|
|
24
|
-
const greenInputRef = useRef();
|
|
25
|
-
const blueInputRef = useRef();
|
|
22
|
+
const hexInputRef = useRef(null);
|
|
23
|
+
const redInputRef = useRef(null);
|
|
24
|
+
const greenInputRef = useRef(null);
|
|
25
|
+
const blueInputRef = useRef(null);
|
|
26
26
|
useEffect(() => {
|
|
27
27
|
if (document.activeElement !== hexInputRef.current) {
|
|
28
28
|
setInternalHex(hex);
|
|
@@ -76,7 +76,7 @@ const Fields = ({
|
|
|
76
76
|
return /* @__PURE__ */ jsxs("div", {
|
|
77
77
|
className: cx(className, classes.fields),
|
|
78
78
|
children: [/* @__PURE__ */ jsx(HvInput, {
|
|
79
|
-
|
|
79
|
+
ref: hexInputRef,
|
|
80
80
|
className: classes.double,
|
|
81
81
|
label: "HEX",
|
|
82
82
|
value: internalHex == null ? void 0 : internalHex.replace("#", ""),
|
|
@@ -84,7 +84,7 @@ const Fields = ({
|
|
|
84
84
|
onBlur: () => setInternalHex(hex),
|
|
85
85
|
disableClear: true
|
|
86
86
|
}), /* @__PURE__ */ jsx(HvInput, {
|
|
87
|
-
|
|
87
|
+
ref: redInputRef,
|
|
88
88
|
className: classes.single,
|
|
89
89
|
label: "R",
|
|
90
90
|
value: `${internalRed}`,
|
|
@@ -92,7 +92,7 @@ const Fields = ({
|
|
|
92
92
|
onBlur: () => setInternalRed(rgb == null ? void 0 : rgb.r),
|
|
93
93
|
disableClear: true
|
|
94
94
|
}), /* @__PURE__ */ jsx(HvInput, {
|
|
95
|
-
|
|
95
|
+
ref: greenInputRef,
|
|
96
96
|
className: classes.single,
|
|
97
97
|
label: "G",
|
|
98
98
|
value: `${internalGreen}`,
|
|
@@ -100,7 +100,7 @@ const Fields = ({
|
|
|
100
100
|
onBlur: () => setInternalGreen(rgb == null ? void 0 : rgb.g),
|
|
101
101
|
disableClear: true
|
|
102
102
|
}), /* @__PURE__ */ jsx(HvInput, {
|
|
103
|
-
|
|
103
|
+
ref: blueInputRef,
|
|
104
104
|
className: classes.single,
|
|
105
105
|
label: "B",
|
|
106
106
|
value: `${internalBlue}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fields.js","sources":["../../../../../src/components/ColorPicker/Fields/Fields.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { HSLColor, HSVColor, RGBColor } from \"react-color\";\nimport * as color from \"react-color/lib/helpers/color\";\nimport { HvInput } from \"@core/components\";\nimport { ExtractNames } from \"@core/utils\";\nimport { staticClasses, useClasses } from \"./Fields.styles\";\n\nexport { staticClasses as colorPickerFieldsClasses };\n\nexport type HvColorPickerFieldsClasses = ExtractNames<typeof useClasses>;\n\ninterface FieldsProps {\n className?: string;\n rgb?: RGBColor;\n hex?: string;\n onChange: (\n data:\n | HSLColor\n | HSVColor\n | RGBColor\n | {\n source?: string;\n hex?: string;\n },\n event: React.ChangeEvent<HTMLInputElement>\n ) => void;\n classes?: HvColorPickerFieldsClasses;\n}\n\nexport const Fields = ({\n className,\n onChange,\n rgb,\n hex,\n classes: classesProp,\n}: FieldsProps) => {\n const { classes, cx } = useClasses(classesProp);\n const [internalHex, setInternalHex] = useState
|
|
1
|
+
{"version":3,"file":"Fields.js","sources":["../../../../../src/components/ColorPicker/Fields/Fields.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { HSLColor, HSVColor, RGBColor } from \"react-color\";\nimport * as color from \"react-color/lib/helpers/color\";\nimport { HvInput } from \"@core/components\";\nimport { ExtractNames } from \"@core/utils\";\nimport { staticClasses, useClasses } from \"./Fields.styles\";\n\nexport { staticClasses as colorPickerFieldsClasses };\n\nexport type HvColorPickerFieldsClasses = ExtractNames<typeof useClasses>;\n\ninterface FieldsProps {\n className?: string;\n rgb?: RGBColor;\n hex?: string;\n onChange: (\n data:\n | HSLColor\n | HSVColor\n | RGBColor\n | {\n source?: string;\n hex?: string;\n },\n event: React.ChangeEvent<HTMLInputElement>\n ) => void;\n classes?: HvColorPickerFieldsClasses;\n}\n\nexport const Fields = ({\n className,\n onChange,\n rgb,\n hex,\n classes: classesProp,\n}: FieldsProps) => {\n const { classes, cx } = useClasses(classesProp);\n const [internalHex, setInternalHex] = useState(hex);\n const [internalRed, setInternalRed] = useState(rgb?.r);\n const [internalGreen, setInternalGreen] = useState(rgb?.g);\n const [internalBlue, setInternalBlue] = useState(rgb?.b);\n\n const hexInputRef = useRef<HTMLInputElement>(null);\n const redInputRef = useRef<HTMLInputElement>(null);\n const greenInputRef = useRef<HTMLInputElement>(null);\n const blueInputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (document.activeElement !== hexInputRef.current) {\n setInternalHex(hex);\n }\n }, [hex]);\n\n useEffect(() => {\n if (document.activeElement !== redInputRef.current) {\n setInternalRed(rgb?.r);\n }\n\n if (document.activeElement !== greenInputRef.current) {\n setInternalGreen(rgb?.g);\n }\n\n if (document.activeElement !== blueInputRef.current) {\n setInternalBlue(rgb?.b);\n }\n }, [rgb]);\n\n const handleChange = (\n data: {\n hex?: string;\n r?: number;\n g?: number;\n b?: number;\n },\n event: React.ChangeEvent<HTMLInputElement>\n ) => {\n if (data.hex && color.isValidHex(data.hex)) {\n onChange(\n {\n hex: data.hex,\n source: \"hex\",\n },\n event\n );\n } else if (data.r || data.g || data.b) {\n onChange(\n {\n r: data.r || rgb?.r,\n g: data.g || rgb?.g,\n b: data.b || rgb?.b,\n source: \"rgb\",\n },\n event\n );\n }\n };\n\n const onChangeHex = (event: React.ChangeEvent<any>, value: string) => {\n setInternalHex(value);\n handleChange({ hex: value }, event);\n };\n\n const onChangeRbg = (\n event: React.ChangeEvent<any>,\n value: string,\n colorPart: \"r\" | \"g\" | \"b\"\n ) => {\n if (colorPart === \"r\") setInternalRed(Number(value));\n if (colorPart === \"g\") setInternalGreen(Number(value));\n if (colorPart === \"b\") setInternalBlue(Number(value));\n\n handleChange(\n {\n r: colorPart === \"r\" ? Number(value) : rgb?.r,\n g: colorPart === \"g\" ? Number(value) : rgb?.g,\n b: colorPart === \"b\" ? Number(value) : rgb?.b,\n },\n event\n );\n };\n\n return (\n <div className={cx(className, classes.fields)}>\n <HvInput\n ref={hexInputRef}\n className={classes.double}\n label=\"HEX\"\n value={internalHex?.replace(\"#\", \"\")}\n onChange={onChangeHex}\n onBlur={() => setInternalHex(hex)}\n disableClear\n />\n <HvInput\n ref={redInputRef}\n className={classes.single}\n label=\"R\"\n value={`${internalRed}`}\n onChange={(event, value) => onChangeRbg(event, value, \"r\")}\n onBlur={() => setInternalRed(rgb?.r)}\n disableClear\n />\n <HvInput\n ref={greenInputRef}\n className={classes.single}\n label=\"G\"\n value={`${internalGreen}`}\n onChange={(event, value) => onChangeRbg(event, value, \"g\")}\n onBlur={() => setInternalGreen(rgb?.g)}\n disableClear\n />\n <HvInput\n ref={blueInputRef}\n className={classes.single}\n label=\"B\"\n value={`${internalBlue}`}\n onChange={(event, value) => onChangeRbg(event, value, \"b\")}\n onBlur={() => setInternalBlue(rgb?.b)}\n disableClear\n />\n </div>\n );\n};\n"],"names":["Fields","className","onChange","rgb","hex","classes","classesProp","cx","useClasses","internalHex","setInternalHex","useState","internalRed","setInternalRed","r","internalGreen","setInternalGreen","g","internalBlue","setInternalBlue","b","hexInputRef","useRef","redInputRef","greenInputRef","blueInputRef","useEffect","document","activeElement","current","handleChange","data","event","color","isValidHex","source","onChangeHex","value","onChangeRbg","colorPart","Number","fields","children","_jsx","HvInput","ref","double","label","replace","onBlur","disableClear","single"],"mappings":"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"}
|
|
@@ -24,10 +24,10 @@ const Picker = ({
|
|
|
24
24
|
} = useClasses(classesProp);
|
|
25
25
|
const SaturationPointer = useCallback(() => /* @__PURE__ */ jsx("div", {
|
|
26
26
|
className: classes == null ? void 0 : classes.saturationPointer
|
|
27
|
-
}), []);
|
|
27
|
+
}), [classes == null ? void 0 : classes.saturationPointer]);
|
|
28
28
|
const HueSlider = useCallback(() => /* @__PURE__ */ jsx("div", {
|
|
29
29
|
className: classes == null ? void 0 : classes.hueSlider
|
|
30
|
-
}), []);
|
|
30
|
+
}), [classes == null ? void 0 : classes.hueSlider]);
|
|
31
31
|
return /* @__PURE__ */ jsxs(Fragment, {
|
|
32
32
|
children: [title && /* @__PURE__ */ jsx(HvTypography, {
|
|
33
33
|
className: classes.title,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Picker.js","sources":["../../../../../src/components/ColorPicker/Picker/Picker.tsx"],"sourcesContent":["import { useCallback } from \"react\";\nimport { Saturation, Hue } from \"react-color/lib/components/common\";\nimport {\n CustomPicker,\n CustomPickerInjectedProps,\n HSLColor,\n HSVColor,\n RGBColor,\n} from \"react-color\";\nimport { HvTypography } from \"@core/components\";\nimport { useTheme } from \"@core/hooks\";\nimport { ExtractNames } from \"@core/utils\";\nimport { staticClasses, useClasses } from \"./Picker.styles\";\nimport { Fields } from \"../Fields\";\n\nexport { staticClasses as colorPickerPickerClasses };\n\nexport type HvColorPickerPickerClasses = ExtractNames<typeof useClasses>;\n\nexport const Picker = ({\n onChange,\n rgb,\n hsl,\n hsv,\n hex,\n title,\n classes: classesProp,\n}: {\n classes?: HvColorPickerPickerClasses;\n title?: string;\n} & CustomPickerInjectedProps<\n | HSLColor\n | HSVColor\n | RGBColor\n | {\n source?: string;\n hex?: string;\n }\n>) => {\n const { activeTheme } = useTheme();\n const { classes } = useClasses(classesProp);\n\n const SaturationPointer = useCallback(\n () => <div className={classes?.saturationPointer} />,\n []\n );\n\n const HueSlider = useCallback(\n () => <div className={classes?.hueSlider} />,\n []\n );\n\n return (\n <>\n {title && (\n <HvTypography className={classes.title} variant=\"caption1\">\n {title}\n </HvTypography>\n )}\n <div className={classes.pickers}>\n <div className={classes.saturation}>\n <Saturation\n hsl={hsl}\n hsv={hsv}\n onChange={onChange}\n pointer={SaturationPointer}\n />\n </div>\n <div className={classes.hue}>\n <Hue\n direction={activeTheme?.colorPicker.hueDirection}\n hsl={hsl}\n onChange={onChange}\n pointer={HueSlider}\n />\n </div>\n </div>\n <Fields\n className={classes.fields}\n rgb={rgb}\n hex={hex}\n onChange={onChange}\n />\n </>\n );\n};\n\nexport default CustomPicker(Picker);\n"],"names":["Picker","onChange","rgb","hsl","hsv","hex","title","classes","classesProp","activeTheme","useTheme","useClasses","SaturationPointer","useCallback","_jsx","className","saturationPointer","HueSlider","hueSlider","_Fragment","children","HvTypography","variant","_jsxs","pickers","saturation","Saturation","pointer","hue","Hue","direction","colorPicker","hueDirection","Fields","fields","CustomPicker"],"mappings":";;;;;;;;;AAmBO,MAAMA,SAASA,CAAC;AAAA,EACrBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,SAASC;AAYX,MAAM;AACE,QAAA;AAAA,IAAEC;AAAAA,MAAgBC,SAAS;AAC3B,QAAA;AAAA,IAAEH;AAAAA,EAAAA,IAAYI,WAAWH,WAAW;AAE1C,QAAMI,oBAAoBC,YACxB,MAAMC,oBAAA,OAAA;AAAA,IAAKC,WAAWR,mCAASS;AAAAA,
|
|
1
|
+
{"version":3,"file":"Picker.js","sources":["../../../../../src/components/ColorPicker/Picker/Picker.tsx"],"sourcesContent":["import { useCallback } from \"react\";\nimport { Saturation, Hue } from \"react-color/lib/components/common\";\nimport {\n CustomPicker,\n CustomPickerInjectedProps,\n HSLColor,\n HSVColor,\n RGBColor,\n} from \"react-color\";\nimport { HvTypography } from \"@core/components\";\nimport { useTheme } from \"@core/hooks\";\nimport { ExtractNames } from \"@core/utils\";\nimport { staticClasses, useClasses } from \"./Picker.styles\";\nimport { Fields } from \"../Fields\";\n\nexport { staticClasses as colorPickerPickerClasses };\n\nexport type HvColorPickerPickerClasses = ExtractNames<typeof useClasses>;\n\nexport const Picker = ({\n onChange,\n rgb,\n hsl,\n hsv,\n hex,\n title,\n classes: classesProp,\n}: {\n classes?: HvColorPickerPickerClasses;\n title?: string;\n} & CustomPickerInjectedProps<\n | HSLColor\n | HSVColor\n | RGBColor\n | {\n source?: string;\n hex?: string;\n }\n>) => {\n const { activeTheme } = useTheme();\n const { classes } = useClasses(classesProp);\n\n const SaturationPointer = useCallback(\n () => <div className={classes?.saturationPointer} />,\n [classes?.saturationPointer]\n );\n\n const HueSlider = useCallback(\n () => <div className={classes?.hueSlider} />,\n [classes?.hueSlider]\n );\n\n return (\n <>\n {title && (\n <HvTypography className={classes.title} variant=\"caption1\">\n {title}\n </HvTypography>\n )}\n <div className={classes.pickers}>\n <div className={classes.saturation}>\n <Saturation\n hsl={hsl}\n hsv={hsv}\n onChange={onChange}\n pointer={SaturationPointer}\n />\n </div>\n <div className={classes.hue}>\n <Hue\n direction={activeTheme?.colorPicker.hueDirection}\n hsl={hsl}\n onChange={onChange}\n pointer={HueSlider}\n />\n </div>\n </div>\n <Fields\n className={classes.fields}\n rgb={rgb}\n hex={hex}\n onChange={onChange}\n />\n </>\n );\n};\n\nexport default CustomPicker(Picker);\n"],"names":["Picker","onChange","rgb","hsl","hsv","hex","title","classes","classesProp","activeTheme","useTheme","useClasses","SaturationPointer","useCallback","_jsx","className","saturationPointer","HueSlider","hueSlider","_Fragment","children","HvTypography","variant","_jsxs","pickers","saturation","Saturation","pointer","hue","Hue","direction","colorPicker","hueDirection","Fields","fields","CustomPicker"],"mappings":";;;;;;;;;AAmBO,MAAMA,SAASA,CAAC;AAAA,EACrBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,SAASC;AAYX,MAAM;AACE,QAAA;AAAA,IAAEC;AAAAA,MAAgBC,SAAS;AAC3B,QAAA;AAAA,IAAEH;AAAAA,EAAAA,IAAYI,WAAWH,WAAW;AAE1C,QAAMI,oBAAoBC,YACxB,MAAMC,oBAAA,OAAA;AAAA,IAAKC,WAAWR,mCAASS;AAAAA,EAAoB,CAAA,GACnD,CAACT,mCAASS,iBAAiB,CAC7B;AAEA,QAAMC,YAAYJ,YAChB,MAAMC,oBAAA,OAAA;AAAA,IAAKC,WAAWR,mCAASW;AAAAA,EAAY,CAAA,GAC3C,CAACX,mCAASW,SAAS,CACrB;AAEA,8BACEC,UAAA;AAAA,IAAAC,UACGd,CAAAA,SACCQ,oBAACO,cAAY;AAAA,MAACN,WAAWR,QAAQD;AAAAA,MAAOgB,SAAQ;AAAA,MAAUF,UACvDd;AAAAA,IAAAA,CACW,GAEhBiB,qBAAA,OAAA;AAAA,MAAKR,WAAWR,QAAQiB;AAAAA,MAAQJ,WAC9BN,oBAAA,OAAA;AAAA,QAAKC,WAAWR,QAAQkB;AAAAA,QAAWL,8BAChCM,YAAU;AAAA,UACTvB;AAAAA,UACAC;AAAAA,UACAH;AAAAA,UACA0B,SAASf;AAAAA,QAAAA,CACV;AAAA,MAAA,CACE,GACLE,oBAAA,OAAA;AAAA,QAAKC,WAAWR,QAAQqB;AAAAA,QAAIR,8BACzBS,KAAG;AAAA,UACFC,WAAWrB,2CAAasB,YAAYC;AAAAA,UACpC7B;AAAAA,UACAF;AAAAA,UACA0B,SAASV;AAAAA,QAAAA,CACV;AAAA,MAAA,CACE,CAAC;AAAA,IAAA,CACH,GACLH,oBAACmB,QAAM;AAAA,MACLlB,WAAWR,QAAQ2B;AAAAA,MACnBhC;AAAAA,MACAG;AAAAA,MACAJ;AAAAA,IAAAA,CACD,CAAC;AAAA,EAAA,CACF;AAEN;AAEA,MAAekC,WAAAA,aAAanC,MAAM;"}
|
|
@@ -86,7 +86,7 @@ const HvDatePicker = ({
|
|
|
86
86
|
useEffect(() => {
|
|
87
87
|
setStartDate(rangeMode ? startValue : value, true);
|
|
88
88
|
setEndDate(endValue, true);
|
|
89
|
-
}, [value, startValue, endValue, rangeMode]);
|
|
89
|
+
}, [value, startValue, endValue, rangeMode, setStartDate, setEndDate]);
|
|
90
90
|
const endDateIsSet = useRef(false);
|
|
91
91
|
endDateIsSet.current = endDate != null;
|
|
92
92
|
useEffect(() => {
|
|
@@ -233,7 +233,7 @@ const HvDatePicker = ({
|
|
|
233
233
|
label: "StyledTypography"
|
|
234
234
|
})({
|
|
235
235
|
color: dateString ? theme.colors.secondary : theme.datePicker.dropdownPlaceholderColor
|
|
236
|
-
}, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRGF0ZVBpY2tlci9EYXRlUGlja2VyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5ZDZCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRGF0ZVBpY2tlci9EYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gXCJAaGl0YWNoaXZhbnRhcmEvdWlraXQtcmVhY3QtaWNvbnNcIjtcbmltcG9ydCB7IHRoZW1lIH0gZnJvbSBcIkBoaXRhY2hpdmFudGFyYS91aWtpdC1zdHlsZXNcIjtcbmltcG9ydCB7XG4gIEh2Q2FsZW5kYXIsXG4gIEh2SW5mb01lc3NhZ2UsXG4gIEh2V2FybmluZ1RleHQsXG4gIEh2Q2FsZW5kYXJQcm9wcyxcbiAgSHZBY3Rpb25CYXIsXG4gIEh2QnV0dG9uLFxuICBIdkZvcm1FbGVtZW50LFxuICBIdlR5cG9ncmFwaHksXG4gIEh2QmFzZURyb3Bkb3duLFxuICBIdkxhYmVsLFxufSBmcm9tIFwiQGNvcmUvY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgdXNlQ29udHJvbGxlZCwgdXNlTGFiZWxzLCB1c2VUaGVtZSwgdXNlVW5pcXVlSWQgfSBmcm9tIFwiQGNvcmUvaG9va3NcIjtcbmltcG9ydCB7IEh2QmFzZVByb3BzIH0gZnJvbSBcIkBjb3JlL3R5cGVzXCI7XG5pbXBvcnQgeyBFeHRyYWN0TmFtZXMsIHNldElkLCB1c2VTYXZlZFN0YXRlIH0gZnJvbSBcIkBjb3JlL3V0aWxzXCI7XG5pbXBvcnQgeyBpc0ludmFsaWQgfSBmcm9tIFwiLi4vRm9ybXMvRm9ybUVsZW1lbnQvdmFsaWRhdGlvblN0YXRlc1wiO1xuaW1wb3J0IHsgaXNEYXRlIH0gZnJvbSBcIi4uL0NhbGVuZGFyL3V0aWxzXCI7XG5pbXBvcnQgeyBnZXREYXRlTGFiZWwgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHVzZVZpc2libGVEYXRlIGZyb20gXCIuL3VzZVZpc2libGVEYXRlXCI7XG5pbXBvcnQgeyBzdGF0aWNDbGFzc2VzLCB1c2VDbGFzc2VzIH0gZnJvbSBcIi4vRGF0ZVBpY2tlci5zdHlsZXNcIjtcblxuZXhwb3J0IHsgc3RhdGljQ2xhc3NlcyBhcyBkYXRlUGlja2VyQ2xhc3NlcyB9O1xuXG5leHBvcnQgdHlwZSBIdkRhdGVQaWNrZXJDbGFzc2VzID0gRXh0cmFjdE5hbWVzPHR5cGVvZiB1c2VDbGFzc2VzPjtcblxuY29uc3QgREVGQVVMVF9MQUJFTFMgPSB7XG4gIGFwcGx5TGFiZWw6IFwiQXBwbHlcIixcbiAgY2FuY2VsTGFiZWw6IFwiQ2FuY2VsXCIsXG4gIGNsZWFyTGFiZWw6IFwiQ2xlYXJcIixcbiAgaW52YWxpZExhYmVsOiBcIkludmFsaWQgZGF0ZVwiLFxufTtcblxuZXhwb3J0IHR5cGUgSHZEYXRlUGlja2VyU3RhdHVzID0gXCJzdGFuZEJ5XCIgfCBcInZhbGlkXCIgfCBcImludmFsaWRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBIdkRhdGVQaWNrZXJQcm9wc1xuICBleHRlbmRzIEh2QmFzZVByb3BzPEhUTUxEaXZFbGVtZW50LCBcIm9uQ2hhbmdlXCI+IHtcbiAgLyoqXG4gICAqIENsYXNzIG5hbWVzIHRvIGJlIGFwcGxpZWQuXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIEpzcyBPYmplY3QgdXNlZCB0byBvdmVycmlkZSBvciBleHRlbmQgdGhlIGNvbXBvbmVudCBzdHlsZXMgYXBwbGllZC5cbiAgICovXG4gIGNsYXNzZXM/OiBIdkRhdGVQaWNrZXJDbGFzc2VzO1xuICAvKipcbiAgICogSWQgdG8gYmUgYXBwbGllZCB0byB0aGUgZm9ybSBlbGVtZW50IHJvb3Qgbm9kZS5cbiAgICovXG4gIGlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9ybSBlbGVtZW50IG5hbWUuXG4gICAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxhYmVsIG9mIHRoZSBmb3JtIGVsZW1lbnQuXG4gICAqXG4gICAqIFRoZSBmb3JtIGVsZW1lbnQgbXVzdCBiZSBsYWJlbGVkIGZvciBhY2Nlc3NpYmlsaXR5IHJlYXNvbnMuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgYW4gYXJpYS1sYWJlbCBvciBhcmlhLWxhYmVsbGVkYnkgbXVzdCBiZSBwcm92aWRlZCBpbnN0ZWFkLlxuICAgKi9cbiAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBcImFyaWEtbGFiZWxcIj86IHN0cmluZztcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIFwiYXJpYS1sYWJlbGxlZGJ5XCI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQcm92aWRlIGFkZGl0aW9uYWwgZGVzY3JpcHRpdmUgdGV4dCBmb3IgdGhlIGZvcm0gZWxlbWVudC5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogUmVhY3QuUmVhY3ROb2RlO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcGxhY2Vob2xkZXIgdmFsdWUgd2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBmb3JtIGVsZW1lbnQgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB1c2VyIGlucHV0IGlzIHJlcXVpcmVkIG9uIHRoZSBmb3JtIGVsZW1lbnQuXG4gICAqL1xuICByZXF1aXJlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIGZvcm0gZWxlbWVudC5cbiAgICpcbiAgICogVmFsaWQgaXMgY29ycmVjdCwgaW52YWxpZCBpcyBpbmNvcnJlY3QgYW5kIHN0YW5kQnkgbWVhbnMgbm8gdmFsaWRhdGlvbnMgaGF2ZSBydW4uXG4gICAqXG4gICAqIFdoZW4gdW5jb250cm9sbGVkIGFuZCB1bnNwZWNpZmllZCBpdCB3aWxsIGRlZmF1bHQgdG8gXCJzdGFuZEJ5XCIgYW5kIGNoYW5nZSB0byBlaXRoZXIgXCJ2YWxpZFwiXG4gICAqIG9yIFwiaW52YWxpZFwiIGFmdGVyIGFueSBjaGFuZ2UgdG8gdGhlIHN0YXRlLlxuICAgKi9cbiAgc3RhdHVzPzogSHZEYXRlUGlja2VyU3RhdHVzO1xuICAvKipcbiAgICogVGhlIGVycm9yIG1lc3NhZ2UgdG8gc2hvdyB3aGVuIHRoZSB2YWxpZGF0aW9uIHN0YXR1cyBpcyBcImludmFsaWRcIi5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gXCJSZXF1aXJlZFwiIHdoZW4gdGhlIHN0YXR1cyBpcyB1bmNvbnRyb2xsZWQgYW5kIG5vIGBhcmlhLWVycm9ybWVzc2FnZWAgaXMgcHJvdmlkZWQuXG4gICAqL1xuICBzdGF0dXNNZXNzYWdlPzogUmVhY3QuUmVhY3ROb2RlO1xuICAvKipcbiAgICogSWRlbnRpZmllcyB0aGUgZWxlbWVudCB0aGF0IHByb3ZpZGVzIGFuIGVycm9yIG1lc3NhZ2UgZm9yIHRoZSBkYXRlIHBpY2tlci5cbiAgICpcbiAgICogV2lsbCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgdmFsaWRhdGlvbiBzdGF0dXMgaXMgaW52YWxpZC5cbiAgICovXG4gIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZT86IChkYXRlPzogRGF0ZSwgZW5kRGF0ZT86IERhdGUpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIGNsaWNrcyBvbiBjYW5jZWwuXG4gICAqL1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIGNsaWNrcyBvbiBjbGVhci5cbiAgICovXG4gIG9uQ2xlYXI/OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgYWxsIHRoZSBsYWJlbHMgZm9yIHRoZSBkYXRlcGlja2VyLlxuICAgKi9cbiAgbGFiZWxzPzoge1xuICAgIC8qKlxuICAgICAqIEFwcGx5IGJ1dHRvbiBsYWJlbC5cbiAgICAgKi9cbiAgICBhcHBseUxhYmVsPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIENhbmNlbCBidXR0b24gbGFiZWwuXG4gICAgICovXG4gICAgY2FuY2VsTGFiZWw/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQ2xlYXIgYnV0dG9uIGxhYmVsLlxuICAgICAqL1xuICAgIGNsZWFyTGFiZWw/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogSW52YWxpZCBEYXRlIGxhYmVsLlxuICAgICAqL1xuICAgIGludmFsaWREYXRlTGFiZWw/OiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBpbnB1dCB3aGVuIGluIHNpbmdsZSBjYWxlbmRhciBtb2RlLlxuICAgKi9cbiAgdmFsdWU/OiBEYXRlO1xuICAvKipcbiAgICogVGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBzdGFydCBkYXRlIHdoZW4gaW4gcmFuZ2UgbW9kZS5cbiAgICovXG4gIHN0YXJ0VmFsdWU/OiBEYXRlO1xuICAvKipcbiAgICogVGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBlbmQgZGF0ZSB3aGVuIGluIHJhbmdlIG1vZGUuXG4gICAqL1xuICBlbmRWYWx1ZT86IERhdGU7XG4gIC8qKlxuICAgKiBGbGFnIGluZm9ybWluZyBpZiB0aGUgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgaW4gcmFuZ2UgbW9kZSBvciBpbiBzaW5nbGUgbW9kZS5cbiAgICogVE9ETzogcmVtb3ZlIHRoaXMgaW4gZmF2b3VyIG9mIGRpc2NyaW1pbmF0ZWQgdW5pb25cbiAgICovXG4gIHJhbmdlTW9kZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgcGxhY2VtZW50IHdoZXJlIHRoZSBjYWxlbmRhciBzaG91bGQgYmUgcGxhY2VkIGFjY29yZGluZyB0byB0aGUgaW5wdXQuIE9wdGlvbnMgYXJlIGBsZWZ0YCBvciBgcmlnaHRgLlxuICAgKiBOb3RlIHRoaXMgcHJvcCBvbmx5IGFmZmVjdHMgdGhlIGNhbGVuZGFyIHdoZW4gaW4gYHJhbmdlTW9kZWAuXG4gICAqL1xuICBob3Jpem9udGFsUGxhY2VtZW50PzogXCJsZWZ0XCIgfCBcInJpZ2h0XCI7XG4gIC8qKlxuICAgKiBUaGUgY2FsZW5kYXIgbG9jYWxlLiBJZiB1bmRlZmluZWQsIGl0IHVzZXMgY2FsZW5kYXIgZGVmYXVsdFxuICAgKi9cbiAgbG9jYWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBpZiBhY3Rpb25zIGJ1dHRvbnMgYXJlIHZpc2libGUgYXQgdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgc2hvd0FjdGlvbnM/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29udHJvbHMgaWYgY2xlYXIgYnV0dG9uIGlzIHZpc2libGUgYXQgdGhlIGNhbGVuZGFyLFxuICAgKiBvbmx5IHdvcmtzIGlmIHNob3dpbmcgYWN0aW9ucyBvciBpbiByYW5nZSBtb2RlLlxuICAgKi9cbiAgc2hvd0NsZWFyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIHBvcnRhbCBiZWhhdmlvci4gVGhlIGNoaWxkcmVuIHN0YXkgd2l0aGluIGl0J3MgcGFyZW50IERPTSBoaWVyYXJjaHkuXG4gICAqL1xuICBkaXNhYmxlUG9ydGFsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNldHMgaWYgdGhlIGNhbGVuZGFyIGNvbnRhaW5lciBzaG91bGQgZm9sbG93IHRoZSBkYXRlIHBpY2tlciBpbnB1dCBvdXQgb2YgdGhlIHNjcmVlbiBvciBzdGF5IHZpc2libGUuXG4gICAqL1xuICBlc2NhcGVXaXRoUmVmZXJlbmNlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFuIGVsZW1lbnQgcGxhY2VkIGJlZm9yZSB0aGUgQ2FsZW5kYXJcbiAgICovXG4gIHN0YXJ0QWRvcm5tZW50PzogUmVhY3QuUmVhY3ROb2RlO1xuICAvKipcbiAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcHMgdG8gYmUgcGFzc2VkIG9udG8gdGhlIGJhc2VEcm9wZG93bi5cbiAgICovXG4gIGRyb3Bkb3duUHJvcHM/OiBPYmplY3Q7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgdGhlIERhdGVQaWNrZXIgd2lsbCBiZSBpbiByZWFkIG9ubHkgbW9kZSwgdW5hYmxlIHRvIGJlIGludGVyYWN0ZWQuXG4gICAqL1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHByb3BzIHBhc3NlZCB0byB0aGUgSHZDYWxlbmRhciBjb21wb25lbnQuXG4gICAqL1xuICBjYWxlbmRhclByb3BzPzogUGFydGlhbDxIdkNhbGVuZGFyUHJvcHM+O1xufVxuXG4vKipcbiAqIEEgZGF0ZSBwaWNrZXIsIHBvcHVwIGNhbGVuZGFyIG9yIGRhdGUgcmFuZ2UgcGlja2VyIGlzIGEgZ3JhcGhpY2FsIHVzZXJcbiAqIGludGVyZmFjZSB3aWRnZXQgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIHNlbGVjdCBhIGRhdGUgZnJvbSBhIGNhbGVuZGFyLlxuICovXG5leHBvcnQgY29uc3QgSHZEYXRlUGlja2VyID0gKHtcbiAgY2xhc3NlczogY2xhc3Nlc1Byb3AsXG4gIGNsYXNzTmFtZSxcblxuICBpZCxcbiAgbmFtZSxcblxuICByZXF1aXJlZCA9IGZhbHNlLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICByZWFkT25seSxcblxuICBsYWJlbCxcbiAgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbCxcbiAgXCJhcmlhLWxhYmVsbGVkYnlcIjogYXJpYUxhYmVsbGVkQnksXG4gIGRlc2NyaXB0aW9uLFxuICBcImFyaWEtZGVzY3JpYmVkYnlcIjogYXJpYURlc2NyaWJlZEJ5LFxuXG4gIG9uQ2hhbmdlLFxuICBvbkNhbmNlbCxcbiAgb25DbGVhcixcbiAgc3RhdHVzLFxuICBzdGF0dXNNZXNzYWdlLFxuICBcImFyaWEtZXJyb3JtZXNzYWdlXCI6IGFyaWFFcnJvck1lc3NhZ2UsXG5cbiAgcGxhY2Vob2xkZXIsXG5cbiAgbGFiZWxzOiBsYWJlbHNQcm9wLFxuXG4gIHZhbHVlLFxuICBzdGFydFZhbHVlLFxuICBlbmRWYWx1ZSxcblxuICByYW5nZU1vZGUgPSBmYWxzZSxcbiAgc3RhcnRBZG9ybm1lbnQsXG4gIGhvcml6b250YWxQbGFjZW1lbnQgPSBcInJpZ2h0XCIsXG4gIGxvY2FsZTogbG9jYWxlUHJvcCxcbiAgc2hvd0FjdGlvbnMgPSBmYWxzZSxcbiAgc2hvd0NsZWFyID0gZmFsc2UsXG4gIGRpc2FibGVQb3J0YWwgPSB0cnVlLFxuICBlc2NhcGVXaXRoUmVmZXJlbmNlID0gdHJ1ZSxcbiAgZHJvcGRvd25Qcm9wcyxcbiAgY2FsZW5kYXJQcm9wcyxcbiAgLi4ub3RoZXJzXG59OiBIdkRhdGVQaWNrZXJQcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzZXMsIGN4IH0gPSB1c2VDbGFzc2VzKGNsYXNzZXNQcm9wKTtcbiAgY29uc3QgbGFiZWxzID0gdXNlTGFiZWxzKERFRkFVTFRfTEFCRUxTLCBsYWJlbHNQcm9wKTtcblxuICBjb25zdCBlbGVtZW50SWQgPSB1c2VVbmlxdWVJZChpZCwgXCJodmRhdGVwaWNrZXJcIik7XG5cbiAgY29uc3QgW3ZhbGlkYXRpb25TdGF0ZSwgc2V0VmFsaWRhdGlvblN0YXRlXSA9IHVzZUNvbnRyb2xsZWQoXG4gICAgc3RhdHVzLFxuICAgIFwic3RhbmRCeVwiXG4gICk7XG5cbiAgY29uc3QgW3ZhbGlkYXRpb25NZXNzYWdlXSA9IHVzZUNvbnRyb2xsZWQoc3RhdHVzTWVzc2FnZSwgXCJSZXF1aXJlZFwiKTtcblxuICBjb25zdCBsb2NhbGUgPSBsb2NhbGVQcm9wIHx8IFwiZW4tVVNcIjtcblxuICBjb25zdCBbY2FsZW5kYXJPcGVuLCBzZXRDYWxlbmRhck9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IFtzdGFydERhdGUsIHNldFN0YXJ0RGF0ZSwgcm9sbGJhY2tTdGFydERhdGVdID0gdXNlU2F2ZWRTdGF0ZShcbiAgICByYW5nZU1vZGUgPyBzdGFydFZhbHVlIDogdmFsdWVcbiAgKTtcbiAgY29uc3QgW2VuZERhdGUsIHNldEVuZERhdGUsIHJvbGxiYWNrRW5kRGF0ZV0gPSB1c2VTYXZlZFN0YXRlKGVuZFZhbHVlKTtcblxuICBjb25zdCBbdmlzaWJsZURhdGUsIGRpc3BhdGNoQWN0aW9uXSA9IHVzZVZpc2libGVEYXRlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7XG5cbiAgY29uc3QgZm9jdXNUYXJnZXQgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IHsgYWN0aXZlVGhlbWUgfSA9IHVzZVRoZW1lKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTdGFydERhdGUocmFuZ2VNb2RlID8gc3RhcnRWYWx1ZSA6IHZhbHVlLCB0cnVlKTtcbiAgICBzZXRFbmREYXRlKGVuZFZhbHVlLCB0cnVlKTtcbiAgfSwgW3ZhbHVlLCBzdGFydFZhbHVlLCBlbmRWYWx1ZSwgcmFuZ2VNb2RlXSk7XG5cbiAgY29uc3QgZW5kRGF0ZUlzU2V0ID0gdXNlUmVmKGZhbHNlKTtcbiAgZW5kRGF0ZUlzU2V0LmN1cnJlbnQgPSBlbmREYXRlICE9IG51bGw7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3RhcnREYXRlICE9IG51bGwpIHtcbiAgICAgIGRpc3BhdGNoQWN0aW9uKHtcbiAgICAgICAgdHlwZTogXCJtb250aF95ZWFyXCIsXG4gICAgICAgIHRhcmdldDogZW5kRGF0ZUlzU2V0LmN1cnJlbnQgPyBcImxlZnRcIiA6IFwiYmVzdFwiLFxuICAgICAgICB5ZWFyOiBzdGFydERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgbW9udGg6IHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2Rpc3BhdGNoQWN0aW9uLCBzdGFydERhdGVdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChlbmREYXRlICE9IG51bGwpIHtcbiAgICAgIGRpc3BhdGNoQWN0aW9uKHtcbiAgICAgICAgdHlwZTogXCJtb250aF95ZWFyXCIsXG4gICAgICAgIHRhcmdldDogXCJyaWdodFwiLFxuICAgICAgICB5ZWFyOiBlbmREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIG1vbnRoOiBlbmREYXRlLmdldE1vbnRoKCkgKyAxLFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbZGlzcGF0Y2hBY3Rpb24sIGVuZERhdGVdKTtcblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgYEFwcGx5YCBhY3Rpb24uIEJvdGggc2luZ2xlIGFuZCByYW5nZWQgbW9kZXMgYXJlIGhhbmRsZWQgaGVyZS5cbiAgICovXG4gIGNvbnN0IGhhbmRsZUFwcGx5ID0gKCkgPT4ge1xuICAgIHNldFN0YXJ0RGF0ZShzdGFydERhdGUsIHRydWUpO1xuICAgIHNldEVuZERhdGUoZW5kRGF0ZSA/PyBzdGFydERhdGUsIHRydWUpO1xuXG4gICAgb25DaGFuZ2U/LihzdGFydERhdGUsIGVuZERhdGUpO1xuXG4gICAgc2V0VmFsaWRhdGlvblN0YXRlKCgpID0+IHtcbiAgICAgIC8vIHRoaXMgd2lsbCBvbmx5IHJ1biBpZiBzdGF0dXMgaXMgdW5jb250cm9sbGVkXG4gICAgICBpZiAocmVxdWlyZWQgJiYgKCFpc0RhdGUoc3RhcnREYXRlKSB8fCAocmFuZ2VNb2RlICYmICFpc0RhdGUoZW5kRGF0ZSkpKSkge1xuICAgICAgICByZXR1cm4gXCJpbnZhbGlkXCI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBcInZhbGlkXCI7XG4gICAgfSk7XG5cbiAgICBzZXRDYWxlbmRhck9wZW4oZmFsc2UpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBgQ2FuY2VsYCBhY3Rpb24uIEJvdGggc2luZ2xlIGFuZCByYW5nZWQgbW9kZXMgYXJlIGhhbmRsZWQgaGVyZS5cbiAgICovXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICByb2xsYmFja1N0YXJ0RGF0ZSgpO1xuICAgIHJvbGxiYWNrRW5kRGF0ZSgpO1xuXG4gICAgb25DYW5jZWw/LigpO1xuXG4gICAgc2V0Q2FsZW5kYXJPcGVuKGZhbHNlKTtcbiAgfTtcblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgYENhbmNlbGAgYWN0aW9uLiBCb3RoIHNpbmdsZSBhbmQgcmFuZ2VkIG1vZGVzIGFyZSBoYW5kbGVkIGhlcmUuXG4gICAqL1xuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICBzZXRTdGFydERhdGUodW5kZWZpbmVkLCBmYWxzZSk7XG4gICAgc2V0RW5kRGF0ZSh1bmRlZmluZWQsIGZhbHNlKTtcbiAgICBvbkNsZWFyPy4oKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDYWxlbmRhckNsb3NlID0gKCkgPT4ge1xuICAgIGNvbnN0IHNob3VsZFNhdmUgPSAhKHJhbmdlTW9kZSB8fCBzaG93QWN0aW9ucyk7XG4gICAgaWYgKHNob3VsZFNhdmUpIHtcbiAgICAgIGhhbmRsZUFwcGx5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZUNhbmNlbCgpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVUb2dnbGUgPSAoZXZ0LCBvcGVuKSA9PiB7XG4gICAgLyogXG4gICAgIElmIGV2dCBpcyBudWxsIHRoaXMgdG9nZ2xlIHdhc24ndCB0cmlnZ2VyZWQgYnkgdGhlIHVzZXIuXG4gICAgIGluc3RlYWQgaXQgd2FzIHRyaWdnZXJlZCBieSB0aGUgYmFzZURyb3Bkb3duIHVzZUVmZmVjdCBhZnRlclxuICAgICB0aGUgZGF0ZXBpY2tlciBjaGFuZ2VkIHRoZSBleHBhbmRlZCB2YWx1ZSB0aGlzIGJhc2VEcm9wZG93biBiZWhhdmlvciBuZWVkcyBhIHJldmlld1xuICAgICovXG4gICAgaWYgKGV2dCA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIHNldENhbGVuZGFyT3BlbihvcGVuKTtcbiAgICBpZiAoIW9wZW4pIGhhbmRsZUNhbGVuZGFyQ2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBmb2N1c09uQ29udGFpbmVyID0gKCkgPT4ge1xuICAgIGZvY3VzVGFyZ2V0LmN1cnJlbnQ/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRGF0ZUNoYW5nZSA9IChldmVudCwgbmV3RGF0ZSkgPT4ge1xuICAgIGlmICghaXNEYXRlKG5ld0RhdGUpKSByZXR1cm47XG5cbiAgICBjb25zdCBhdXRvU2F2ZSA9ICFzaG93QWN0aW9ucyAmJiAhcmFuZ2VNb2RlO1xuXG4gICAgaWYgKHJhbmdlTW9kZSkge1xuICAgICAgaWYgKCFzdGFydERhdGUgfHwgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB8fCBuZXdEYXRlIDwgc3RhcnREYXRlKSB7XG4gICAgICAgIHNldFN0YXJ0RGF0ZShuZXdEYXRlKTtcbiAgICAgICAgc2V0RW5kRGF0ZSh1bmRlZmluZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RW5kRGF0ZShuZXdEYXRlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2V0U3RhcnREYXRlKG5ld0RhdGUsIGF1dG9TYXZlKTtcbiAgICB9XG5cbiAgICBpZiAoYXV0b1NhdmUpIHtcbiAgICAgIG9uQ2hhbmdlPy4obmV3RGF0ZSk7XG5cbiAgICAgIHNldFZhbGlkYXRpb25TdGF0ZSgoKSA9PiB7XG4gICAgICAgIC8vIHRoaXMgd2lsbCBvbmx5IHJ1biBpZiBzdGF0dXMgaXMgdW5jb250cm9sbGVkXG4gICAgICAgIGlmIChyZXF1aXJlZCAmJiAhaXNEYXRlKG5ld0RhdGUpKSB7XG4gICAgICAgICAgcmV0dXJuIFwiaW52YWxpZFwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFwidmFsaWRcIjtcbiAgICAgIH0pO1xuXG4gICAgICBzZXRDYWxlbmRhck9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVJbnB1dERhdGVDaGFuZ2UgPSAoZXZlbnQsIG5ld0RhdGUsIHBvc2l0aW9uKSA9PiB7XG4gICAgaWYgKCFpc0RhdGUobmV3RGF0ZSkpIHJldHVybjtcblxuICAgIGlmICghcmFuZ2VNb2RlKSB7XG4gICAgICBoYW5kbGVEYXRlQ2hhbmdlKGV2ZW50LCBuZXdEYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gPT09IFwibGVmdFwiKSB7XG4gICAgICBpZiAoZW5kRGF0ZSkgc2V0U3RhcnREYXRlKG5ld0RhdGUgPiBlbmREYXRlID8gZW5kRGF0ZSA6IG5ld0RhdGUpO1xuICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPT09IFwicmlnaHRcIikge1xuICAgICAgaWYgKCFzdGFydERhdGUpIHtcbiAgICAgICAgaWYgKGVuZERhdGUpIHNldFN0YXJ0RGF0ZShuZXdEYXRlID4gZW5kRGF0ZSA/IGVuZERhdGUgOiBuZXdEYXRlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc2V0RW5kRGF0ZShuZXdEYXRlIDwgc3RhcnREYXRlID8gc3RhcnREYXRlIDogbmV3RGF0ZSk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBjb250YWluZXIgZm9yIHRoZSBhY3Rpb24gZWxlbWVudHMuXG4gICAqL1xuICBjb25zdCByZW5kZXJBY3Rpb25zID0gKCkgPT4gKFxuICAgIDxIdkFjdGlvbkJhciBjbGFzc05hbWU9e2N4KHsgW2NsYXNzZXMuYWN0aW9uQ29udGFpbmVyXTogc2hvd0NsZWFyIH0pfT5cbiAgICAgIHtzaG93Q2xlYXIgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5sZWZ0Q29udGFpbmVyfT5cbiAgICAgICAgICA8SHZCdXR0b25cbiAgICAgICAgICAgIGlkPXtzZXRJZChpZCwgXCJhY3Rpb25cIiwgXCJjbGVhclwiKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5hY3Rpb259XG4gICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeUdob3N0XCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsZWFyfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYWJlbHM/LmNsZWFyTGFiZWx9XG4gICAgICAgICAgPC9IdkJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMucmlnaHRDb250YWluZXJ9PlxuICAgICAgICA8SHZCdXR0b25cbiAgICAgICAgICBpZD17c2V0SWQoaWQsIFwiYWN0aW9uXCIsIFwiYXBwbHlcIil9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmFjdGlvbn1cbiAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeUdob3N0XCJcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBcHBseX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbHM/LmFwcGx5TGFiZWx9XG4gICAgICAgIDwvSHZCdXR0b24+XG4gICAgICAgIDxIdkJ1dHRvblxuICAgICAgICAgIGlkPXtzZXRJZChpZCwgXCJhY3Rpb25cIiwgXCJjYW5jZWxcIil9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmFjdGlvbn1cbiAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeUdob3N0XCJcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWxzPy5jYW5jZWxMYWJlbH1cbiAgICAgICAgPC9IdkJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvSHZBY3Rpb25CYXI+XG4gICk7XG5cbiAgY29uc3Qgc3R5bGVkVHlwb2dyYXBoeSA9IChkYXRlU3RyaW5nLCB2YXJpYW50LCB0ZXh0KSA9PiB7XG4gICAgY29uc3QgU3R5bGVkVHlwb2dyYXBoeSA9IHN0eWxlZChIdlR5cG9ncmFwaHkpKHtcbiAgICAgIGNvbG9yOiBkYXRlU3RyaW5nXG4gICAgICAgID8gdGhlbWUuY29sb3JzLnNlY29uZGFyeVxuICAgICAgICA6IHRoZW1lLmRhdGVQaWNrZXIuZHJvcGRvd25QbGFjZWhvbGRlckNvbG9yLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIDxTdHlsZWRUeXBvZ3JhcGh5IHZhcmlhbnQ9e3ZhcmlhbnR9Pnt0ZXh0fTwvU3R5bGVkVHlwb2dyYXBoeT47XG4gIH07XG5cbiAgY29uc3QgcmVuZGVySW5wdXQgPSAoZGF0ZVN0cmluZykgPT5cbiAgICBzdHlsZWRUeXBvZ3JhcGh5KFxuICAgICAgZGF0ZVN0cmluZyxcbiAgICAgIGFjdGl2ZVRoZW1lPy5kYXRlUGlja2VyLnBsYWNlaG9sZGVyVmFyaWFudCxcbiAgICAgIChkYXRlU3RyaW5nIHx8IHBsYWNlaG9sZGVyKSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IGRhdGVTdHJpbmcgfHwgcGxhY2Vob2xkZXJcbiAgICApO1xuXG4gIGNvbnN0IGRhdGVWYWx1ZSA9IHJhbmdlTW9kZSA/IHsgc3RhcnREYXRlLCBlbmREYXRlIH0gOiBzdGFydERhdGU7XG5cbiAgY29uc3QgaGFzTGFiZWwgPSBsYWJlbCAhPSBudWxsO1xuICBjb25zdCBoYXNEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uICE9IG51bGw7XG5cbiAgLy8gdGhlIGVycm9yIG1lc3NhZ2UgYXJlYSB3aWxsIG9ubHkgYmUgY3JlYXRlZCBpZjpcbiAgLy8gLSBhbiBleHRlcm5hbCBlbGVtZW50IHRoYXQgcHJvdmlkZXMgYW4gZXJyb3IgbWVzc2FnZSBpc24ndCBpZGVudGlmaWVkIHZpYSBhcmlhLWVycm9ybWVzc2FnZSBBTkRcbiAgLy8gICAtIGJvdGggc3RhdHVzIGFuZCBzdGF0dXNNZXNzYWdlIHByb3BlcnRpZXMgYXJlIGJlaW5nIGNvbnRyb2xsZWQgT1JcbiAgLy8gICAtIHN0YXR1cyBpcyB1bmNvbnRyb2xsZWQgYW5kIHJlcXVpcmVkIGlzIHRydWVcbiAgY29uc3QgY2FuU2hvd0Vycm9yID1cbiAgICBhcmlhRXJyb3JNZXNzYWdlID09IG51bGwgJiZcbiAgICAoKHN0YXR1cyAhPT0gdW5kZWZpbmVkICYmIHN0YXR1c01lc3NhZ2UgIT09IHVuZGVmaW5lZCkgfHxcbiAgICAgIChzdGF0dXMgPT09IHVuZGVmaW5lZCAmJiByZXF1aXJlZCkpO1xuXG4gIGNvbnN0IGlzU3RhdGVJbnZhbGlkID0gaXNJbnZhbGlkKHZhbGlkYXRpb25TdGF0ZSk7XG5cbiAgbGV0IGVycm9yTWVzc2FnZUlkO1xuICBpZiAoaXNTdGF0ZUludmFsaWQpIHtcbiAgICBlcnJvck1lc3NhZ2VJZCA9IGNhblNob3dFcnJvclxuICAgICAgPyBzZXRJZChlbGVtZW50SWQsIFwiZXJyb3JcIilcbiAgICAgIDogYXJpYUVycm9yTWVzc2FnZTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEh2Rm9ybUVsZW1lbnRcbiAgICAgIGlkPXtpZH1cbiAgICAgIG5hbWU9e25hbWV9XG4gICAgICB2YWx1ZT17ZGF0ZVZhbHVlfVxuICAgICAgc3RhdHVzPXt2YWxpZGF0aW9uU3RhdGV9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICByZXF1aXJlZD17cmVxdWlyZWR9XG4gICAgICBjbGFzc05hbWU9e2N4KGNsYXNzTmFtZSwgY2xhc3Nlcy5yb290KX1cbiAgICAgIHJlYWRPbmx5PXtyZWFkT25seX1cbiAgICAgIHsuLi5vdGhlcnN9XG4gICAgPlxuICAgICAgeyhoYXNMYWJlbCB8fCBoYXNEZXNjcmlwdGlvbikgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5sYWJlbENvbnRhaW5lcn0+XG4gICAgICAgICAge2hhc0xhYmVsICYmIChcbiAgICAgICAgICAgIDxIdkxhYmVsXG4gICAgICAgICAgICAgIGlkPXtzZXRJZChlbGVtZW50SWQsIFwibGFiZWxcIil9XG4gICAgICAgICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAge2hhc0Rlc2NyaXB0aW9uICYmIChcbiAgICAgICAgICAgIDxIdkluZm9NZXNzYWdlXG4gICAgICAgICAgICAgIGlkPXtzZXRJZChlbGVtZW50SWQsIFwiZGVzY3JpcHRpb25cIil9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5kZXNjcmlwdGlvbn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2Rlc2NyaXB0aW9ufVxuICAgICAgICAgICAgPC9IdkluZm9NZXNzYWdlPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIDxIdkJhc2VEcm9wZG93blxuICAgICAgICByb2xlPVwiY29tYm9ib3hcIlxuICAgICAgICBjbGFzc2VzPXt7XG4gICAgICAgICAgcm9vdDogY2xhc3Nlcy5kcm9wZG93bixcbiAgICAgICAgICBwYW5lbDogY2xhc3Nlcy5wYW5lbCxcbiAgICAgICAgICBoZWFkZXI6IGN4KHsgW2NsYXNzZXMuZHJvcGRvd25IZWFkZXJJbnZhbGlkXTogaXNTdGF0ZUludmFsaWQgfSksXG4gICAgICAgICAgaGVhZGVyT3BlbjogY2xhc3Nlcy5kcm9wZG93bkhlYWRlck9wZW4sXG4gICAgICAgIH19XG4gICAgICAgIHJlYWRPbmx5PXtyZWFkT25seX1cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBkaXNhYmxlUG9ydGFsPXtkaXNhYmxlUG9ydGFsfVxuICAgICAgICB2YXJpYWJsZVdpZHRoXG4gICAgICAgIHBsYWNlbWVudD17aG9yaXpvbnRhbFBsYWNlbWVudH1cbiAgICAgICAgZXhwYW5kZWQ9e2NhbGVuZGFyT3Blbn1cbiAgICAgICAgb25Ub2dnbGU9e2hhbmRsZVRvZ2dsZX1cbiAgICAgICAgb25DbGlja091dHNpZGU9e2hhbmRsZUNhbGVuZGFyQ2xvc2V9XG4gICAgICAgIG9uQ29udGFpbmVyQ3JlYXRpb249e2ZvY3VzT25Db250YWluZXJ9XG4gICAgICAgIHBsYWNlaG9sZGVyPXtyZW5kZXJJbnB1dChnZXREYXRlTGFiZWwoZGF0ZVZhbHVlLCByYW5nZU1vZGUsIGxvY2FsZSkpfVxuICAgICAgICBhZG9ybm1lbnQ9e1xuICAgICAgICAgIDxDYWxlbmRhclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmljb259XG4gICAgICAgICAgICBjb2xvcj17ZGlzYWJsZWQgPyBcInNlY29uZGFyeV84MFwiIDogdW5kZWZpbmVkfVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgcG9wcGVyUHJvcHM9e3tcbiAgICAgICAgICBtb2RpZmllcnM6IFtcbiAgICAgICAgICAgIHsgbmFtZTogXCJwcmV2ZW50T3ZlcmZsb3dcIiwgZW5hYmxlZDogZXNjYXBlV2l0aFJlZmVyZW5jZSB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH19XG4gICAgICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICAgIGFyaWEtbGFiZWxsZWRieT17XG4gICAgICAgICAgW2xhYmVsICYmIHNldElkKGVsZW1lbnRJZCwgXCJsYWJlbFwiKSwgYXJpYUxhYmVsbGVkQnldXG4gICAgICAgICAgICAuam9pbihcIiBcIilcbiAgICAgICAgICAgIC50cmltKCkgfHwgdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICAgYXJpYS1pbnZhbGlkPXtpc1N0YXRlSW52YWxpZCA/IHRydWUgOiB1bmRlZmluZWR9XG4gICAgICAgIGFyaWEtZXJyb3JtZXNzYWdlPXtlcnJvck1lc3NhZ2VJZH1cbiAgICAgICAgYXJpYS1kZXNjcmliZWRieT17XG4gICAgICAgICAgW2Rlc2NyaXB0aW9uICYmIHNldElkKGVsZW1lbnRJZCwgXCJkZXNjcmlwdGlvblwiKSwgYXJpYURlc2NyaWJlZEJ5XVxuICAgICAgICAgICAgLmpvaW4oXCIgXCIpXG4gICAgICAgICAgICAudHJpbSgpIHx8IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICAgIHsuLi5kcm9wZG93blByb3BzfVxuICAgICAgPlxuICAgICAgICA8ZGl2IHJlZj17Zm9jdXNUYXJnZXR9IHRhYkluZGV4PXstMX0gLz5cbiAgICAgICAgPEh2Q2FsZW5kYXJcbiAgICAgICAgICBpZD17c2V0SWQoaWQsIFwiY2FsZW5kYXJcIil9XG4gICAgICAgICAgc3RhcnRBZG9ybm1lbnQ9e3N0YXJ0QWRvcm5tZW50fVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVEYXRlQ2hhbmdlfVxuICAgICAgICAgIG9uSW5wdXRDaGFuZ2U9e2hhbmRsZUlucHV0RGF0ZUNoYW5nZX1cbiAgICAgICAgICBvblZpc2libGVEYXRlQ2hhbmdlPXsoX2V2ZW50LCB0eXBlLCBtb250aCwgdGFyZ2V0KSA9PiB7XG4gICAgICAgICAgICBkaXNwYXRjaEFjdGlvbih7IHR5cGUsIHRhcmdldCwgbW9udGggfSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICB7Li4udmlzaWJsZURhdGV9XG4gICAgICAgICAgey4uLmNhbGVuZGFyUHJvcHN9XG4gICAgICAgICAgaW52YWxpZERhdGVMYWJlbD17bGFiZWxzPy5pbnZhbGlkRGF0ZUxhYmVsfVxuICAgICAgICAvPlxuICAgICAgICB7KHJhbmdlTW9kZSB8fCBzaG93QWN0aW9ucykgJiYgcmVuZGVyQWN0aW9ucygpfVxuICAgICAgPC9IdkJhc2VEcm9wZG93bj5cbiAgICAgIHtjYW5TaG93RXJyb3IgJiYgKFxuICAgICAgICA8SHZXYXJuaW5nVGV4dFxuICAgICAgICAgIGlkPXtzZXRJZChlbGVtZW50SWQsIFwiZXJyb3JcIil9XG4gICAgICAgICAgZGlzYWJsZUJvcmRlclxuICAgICAgICAgIGNsYXNzTmFtZT17Y3goY2xhc3Nlcy5lcnJvcil9XG4gICAgICAgID5cbiAgICAgICAgICB7dmFsaWRhdGlvbk1lc3NhZ2V9XG4gICAgICAgIDwvSHZXYXJuaW5nVGV4dD5cbiAgICAgICl9XG4gICAgPC9IdkZvcm1FbGVtZW50PlxuICApO1xufTtcbiJdfQ== */");
|
|
236
|
+
}, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRGF0ZVBpY2tlci9EYXRlUGlja2VyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEyZDZCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRGF0ZVBpY2tlci9EYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gXCJAaGl0YWNoaXZhbnRhcmEvdWlraXQtcmVhY3QtaWNvbnNcIjtcbmltcG9ydCB7IHRoZW1lIH0gZnJvbSBcIkBoaXRhY2hpdmFudGFyYS91aWtpdC1zdHlsZXNcIjtcbmltcG9ydCB7XG4gIEh2Q2FsZW5kYXIsXG4gIEh2SW5mb01lc3NhZ2UsXG4gIEh2V2FybmluZ1RleHQsXG4gIEh2Q2FsZW5kYXJQcm9wcyxcbiAgSHZBY3Rpb25CYXIsXG4gIEh2QnV0dG9uLFxuICBIdkZvcm1FbGVtZW50LFxuICBIdlR5cG9ncmFwaHksXG4gIEh2QmFzZURyb3Bkb3duLFxuICBIdkxhYmVsLFxuICBIdkZvcm1TdGF0dXMsXG59IGZyb20gXCJAY29yZS9jb21wb25lbnRzXCI7XG5pbXBvcnQgeyB1c2VDb250cm9sbGVkLCB1c2VMYWJlbHMsIHVzZVRoZW1lLCB1c2VVbmlxdWVJZCB9IGZyb20gXCJAY29yZS9ob29rc1wiO1xuaW1wb3J0IHsgSHZCYXNlUHJvcHMgfSBmcm9tIFwiQGNvcmUvdHlwZXNcIjtcbmltcG9ydCB7IEV4dHJhY3ROYW1lcywgc2V0SWQsIHVzZVNhdmVkU3RhdGUgfSBmcm9tIFwiQGNvcmUvdXRpbHNcIjtcbmltcG9ydCB7IGlzSW52YWxpZCB9IGZyb20gXCIuLi9Gb3Jtcy9Gb3JtRWxlbWVudC92YWxpZGF0aW9uU3RhdGVzXCI7XG5pbXBvcnQgeyBpc0RhdGUgfSBmcm9tIFwiLi4vQ2FsZW5kYXIvdXRpbHNcIjtcbmltcG9ydCB7IGdldERhdGVMYWJlbCB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgdXNlVmlzaWJsZURhdGUgZnJvbSBcIi4vdXNlVmlzaWJsZURhdGVcIjtcbmltcG9ydCB7IHN0YXRpY0NsYXNzZXMsIHVzZUNsYXNzZXMgfSBmcm9tIFwiLi9EYXRlUGlja2VyLnN0eWxlc1wiO1xuXG5leHBvcnQgeyBzdGF0aWNDbGFzc2VzIGFzIGRhdGVQaWNrZXJDbGFzc2VzIH07XG5cbmV4cG9ydCB0eXBlIEh2RGF0ZVBpY2tlckNsYXNzZXMgPSBFeHRyYWN0TmFtZXM8dHlwZW9mIHVzZUNsYXNzZXM+O1xuXG5jb25zdCBERUZBVUxUX0xBQkVMUyA9IHtcbiAgYXBwbHlMYWJlbDogXCJBcHBseVwiLFxuICBjYW5jZWxMYWJlbDogXCJDYW5jZWxcIixcbiAgY2xlYXJMYWJlbDogXCJDbGVhclwiLFxuICBpbnZhbGlkTGFiZWw6IFwiSW52YWxpZCBkYXRlXCIsXG59O1xuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIGBIdkZvcm1TdGF0dXNgIGluc3RlYWQgKi9cbmV4cG9ydCB0eXBlIEh2RGF0ZVBpY2tlclN0YXR1cyA9IEh2Rm9ybVN0YXR1cztcblxuZXhwb3J0IGludGVyZmFjZSBIdkRhdGVQaWNrZXJQcm9wc1xuICBleHRlbmRzIEh2QmFzZVByb3BzPEhUTUxEaXZFbGVtZW50LCBcIm9uQ2hhbmdlXCI+IHtcbiAgLyoqXG4gICAqIENsYXNzIG5hbWVzIHRvIGJlIGFwcGxpZWQuXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIEpzcyBPYmplY3QgdXNlZCB0byBvdmVycmlkZSBvciBleHRlbmQgdGhlIGNvbXBvbmVudCBzdHlsZXMgYXBwbGllZC5cbiAgICovXG4gIGNsYXNzZXM/OiBIdkRhdGVQaWNrZXJDbGFzc2VzO1xuICAvKipcbiAgICogSWQgdG8gYmUgYXBwbGllZCB0byB0aGUgZm9ybSBlbGVtZW50IHJvb3Qgbm9kZS5cbiAgICovXG4gIGlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9ybSBlbGVtZW50IG5hbWUuXG4gICAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxhYmVsIG9mIHRoZSBmb3JtIGVsZW1lbnQuXG4gICAqXG4gICAqIFRoZSBmb3JtIGVsZW1lbnQgbXVzdCBiZSBsYWJlbGVkIGZvciBhY2Nlc3NpYmlsaXR5IHJlYXNvbnMuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgYW4gYXJpYS1sYWJlbCBvciBhcmlhLWxhYmVsbGVkYnkgbXVzdCBiZSBwcm92aWRlZCBpbnN0ZWFkLlxuICAgKi9cbiAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBcImFyaWEtbGFiZWxcIj86IHN0cmluZztcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIFwiYXJpYS1sYWJlbGxlZGJ5XCI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQcm92aWRlIGFkZGl0aW9uYWwgZGVzY3JpcHRpdmUgdGV4dCBmb3IgdGhlIGZvcm0gZWxlbWVudC5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogUmVhY3QuUmVhY3ROb2RlO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcGxhY2Vob2xkZXIgdmFsdWUgd2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBmb3JtIGVsZW1lbnQgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB1c2VyIGlucHV0IGlzIHJlcXVpcmVkIG9uIHRoZSBmb3JtIGVsZW1lbnQuXG4gICAqL1xuICByZXF1aXJlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIGZvcm0gZWxlbWVudC5cbiAgICpcbiAgICogVmFsaWQgaXMgY29ycmVjdCwgaW52YWxpZCBpcyBpbmNvcnJlY3QgYW5kIHN0YW5kQnkgbWVhbnMgbm8gdmFsaWRhdGlvbnMgaGF2ZSBydW4uXG4gICAqXG4gICAqIFdoZW4gdW5jb250cm9sbGVkIGFuZCB1bnNwZWNpZmllZCBpdCB3aWxsIGRlZmF1bHQgdG8gXCJzdGFuZEJ5XCIgYW5kIGNoYW5nZSB0byBlaXRoZXIgXCJ2YWxpZFwiXG4gICAqIG9yIFwiaW52YWxpZFwiIGFmdGVyIGFueSBjaGFuZ2UgdG8gdGhlIHN0YXRlLlxuICAgKi9cbiAgc3RhdHVzPzogSHZGb3JtU3RhdHVzO1xuICAvKipcbiAgICogVGhlIGVycm9yIG1lc3NhZ2UgdG8gc2hvdyB3aGVuIHRoZSB2YWxpZGF0aW9uIHN0YXR1cyBpcyBcImludmFsaWRcIi5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gXCJSZXF1aXJlZFwiIHdoZW4gdGhlIHN0YXR1cyBpcyB1bmNvbnRyb2xsZWQgYW5kIG5vIGBhcmlhLWVycm9ybWVzc2FnZWAgaXMgcHJvdmlkZWQuXG4gICAqL1xuICBzdGF0dXNNZXNzYWdlPzogUmVhY3QuUmVhY3ROb2RlO1xuICAvKipcbiAgICogSWRlbnRpZmllcyB0aGUgZWxlbWVudCB0aGF0IHByb3ZpZGVzIGFuIGVycm9yIG1lc3NhZ2UgZm9yIHRoZSBkYXRlIHBpY2tlci5cbiAgICpcbiAgICogV2lsbCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgdmFsaWRhdGlvbiBzdGF0dXMgaXMgaW52YWxpZC5cbiAgICovXG4gIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZT86IChkYXRlPzogRGF0ZSwgZW5kRGF0ZT86IERhdGUpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIGNsaWNrcyBvbiBjYW5jZWwuXG4gICAqL1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIGNsaWNrcyBvbiBjbGVhci5cbiAgICovXG4gIG9uQ2xlYXI/OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgYWxsIHRoZSBsYWJlbHMgZm9yIHRoZSBkYXRlcGlja2VyLlxuICAgKi9cbiAgbGFiZWxzPzoge1xuICAgIC8qKlxuICAgICAqIEFwcGx5IGJ1dHRvbiBsYWJlbC5cbiAgICAgKi9cbiAgICBhcHBseUxhYmVsPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIENhbmNlbCBidXR0b24gbGFiZWwuXG4gICAgICovXG4gICAgY2FuY2VsTGFiZWw/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQ2xlYXIgYnV0dG9uIGxhYmVsLlxuICAgICAqL1xuICAgIGNsZWFyTGFiZWw/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogSW52YWxpZCBEYXRlIGxhYmVsLlxuICAgICAqL1xuICAgIGludmFsaWREYXRlTGFiZWw/OiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBpbnB1dCB3aGVuIGluIHNpbmdsZSBjYWxlbmRhciBtb2RlLlxuICAgKi9cbiAgdmFsdWU/OiBEYXRlO1xuICAvKipcbiAgICogVGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBzdGFydCBkYXRlIHdoZW4gaW4gcmFuZ2UgbW9kZS5cbiAgICovXG4gIHN0YXJ0VmFsdWU/OiBEYXRlO1xuICAvKipcbiAgICogVGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBlbmQgZGF0ZSB3aGVuIGluIHJhbmdlIG1vZGUuXG4gICAqL1xuICBlbmRWYWx1ZT86IERhdGU7XG4gIC8qKlxuICAgKiBGbGFnIGluZm9ybWluZyBpZiB0aGUgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgaW4gcmFuZ2UgbW9kZSBvciBpbiBzaW5nbGUgbW9kZS5cbiAgICogVE9ETzogcmVtb3ZlIHRoaXMgaW4gZmF2b3VyIG9mIGRpc2NyaW1pbmF0ZWQgdW5pb25cbiAgICovXG4gIHJhbmdlTW9kZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgcGxhY2VtZW50IHdoZXJlIHRoZSBjYWxlbmRhciBzaG91bGQgYmUgcGxhY2VkIGFjY29yZGluZyB0byB0aGUgaW5wdXQuIE9wdGlvbnMgYXJlIGBsZWZ0YCBvciBgcmlnaHRgLlxuICAgKiBOb3RlIHRoaXMgcHJvcCBvbmx5IGFmZmVjdHMgdGhlIGNhbGVuZGFyIHdoZW4gaW4gYHJhbmdlTW9kZWAuXG4gICAqL1xuICBob3Jpem9udGFsUGxhY2VtZW50PzogXCJsZWZ0XCIgfCBcInJpZ2h0XCI7XG4gIC8qKlxuICAgKiBUaGUgY2FsZW5kYXIgbG9jYWxlLiBJZiB1bmRlZmluZWQsIGl0IHVzZXMgY2FsZW5kYXIgZGVmYXVsdFxuICAgKi9cbiAgbG9jYWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBpZiBhY3Rpb25zIGJ1dHRvbnMgYXJlIHZpc2libGUgYXQgdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgc2hvd0FjdGlvbnM/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29udHJvbHMgaWYgY2xlYXIgYnV0dG9uIGlzIHZpc2libGUgYXQgdGhlIGNhbGVuZGFyLFxuICAgKiBvbmx5IHdvcmtzIGlmIHNob3dpbmcgYWN0aW9ucyBvciBpbiByYW5nZSBtb2RlLlxuICAgKi9cbiAgc2hvd0NsZWFyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIHBvcnRhbCBiZWhhdmlvci4gVGhlIGNoaWxkcmVuIHN0YXkgd2l0aGluIGl0J3MgcGFyZW50IERPTSBoaWVyYXJjaHkuXG4gICAqL1xuICBkaXNhYmxlUG9ydGFsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNldHMgaWYgdGhlIGNhbGVuZGFyIGNvbnRhaW5lciBzaG91bGQgZm9sbG93IHRoZSBkYXRlIHBpY2tlciBpbnB1dCBvdXQgb2YgdGhlIHNjcmVlbiBvciBzdGF5IHZpc2libGUuXG4gICAqL1xuICBlc2NhcGVXaXRoUmVmZXJlbmNlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFuIGVsZW1lbnQgcGxhY2VkIGJlZm9yZSB0aGUgQ2FsZW5kYXJcbiAgICovXG4gIHN0YXJ0QWRvcm5tZW50PzogUmVhY3QuUmVhY3ROb2RlO1xuICAvKipcbiAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcHMgdG8gYmUgcGFzc2VkIG9udG8gdGhlIGJhc2VEcm9wZG93bi5cbiAgICovXG4gIGRyb3Bkb3duUHJvcHM/OiBPYmplY3Q7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgdGhlIERhdGVQaWNrZXIgd2lsbCBiZSBpbiByZWFkIG9ubHkgbW9kZSwgdW5hYmxlIHRvIGJlIGludGVyYWN0ZWQuXG4gICAqL1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHByb3BzIHBhc3NlZCB0byB0aGUgSHZDYWxlbmRhciBjb21wb25lbnQuXG4gICAqL1xuICBjYWxlbmRhclByb3BzPzogUGFydGlhbDxIdkNhbGVuZGFyUHJvcHM+O1xufVxuXG4vKipcbiAqIEEgZGF0ZSBwaWNrZXIsIHBvcHVwIGNhbGVuZGFyIG9yIGRhdGUgcmFuZ2UgcGlja2VyIGlzIGEgZ3JhcGhpY2FsIHVzZXJcbiAqIGludGVyZmFjZSB3aWRnZXQgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIHNlbGVjdCBhIGRhdGUgZnJvbSBhIGNhbGVuZGFyLlxuICovXG5leHBvcnQgY29uc3QgSHZEYXRlUGlja2VyID0gKHtcbiAgY2xhc3NlczogY2xhc3Nlc1Byb3AsXG4gIGNsYXNzTmFtZSxcblxuICBpZCxcbiAgbmFtZSxcblxuICByZXF1aXJlZCA9IGZhbHNlLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICByZWFkT25seSxcblxuICBsYWJlbCxcbiAgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbCxcbiAgXCJhcmlhLWxhYmVsbGVkYnlcIjogYXJpYUxhYmVsbGVkQnksXG4gIGRlc2NyaXB0aW9uLFxuICBcImFyaWEtZGVzY3JpYmVkYnlcIjogYXJpYURlc2NyaWJlZEJ5LFxuXG4gIG9uQ2hhbmdlLFxuICBvbkNhbmNlbCxcbiAgb25DbGVhcixcbiAgc3RhdHVzLFxuICBzdGF0dXNNZXNzYWdlLFxuICBcImFyaWEtZXJyb3JtZXNzYWdlXCI6IGFyaWFFcnJvck1lc3NhZ2UsXG5cbiAgcGxhY2Vob2xkZXIsXG5cbiAgbGFiZWxzOiBsYWJlbHNQcm9wLFxuXG4gIHZhbHVlLFxuICBzdGFydFZhbHVlLFxuICBlbmRWYWx1ZSxcblxuICByYW5nZU1vZGUgPSBmYWxzZSxcbiAgc3RhcnRBZG9ybm1lbnQsXG4gIGhvcml6b250YWxQbGFjZW1lbnQgPSBcInJpZ2h0XCIsXG4gIGxvY2FsZTogbG9jYWxlUHJvcCxcbiAgc2hvd0FjdGlvbnMgPSBmYWxzZSxcbiAgc2hvd0NsZWFyID0gZmFsc2UsXG4gIGRpc2FibGVQb3J0YWwgPSB0cnVlLFxuICBlc2NhcGVXaXRoUmVmZXJlbmNlID0gdHJ1ZSxcbiAgZHJvcGRvd25Qcm9wcyxcbiAgY2FsZW5kYXJQcm9wcyxcbiAgLi4ub3RoZXJzXG59OiBIdkRhdGVQaWNrZXJQcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzZXMsIGN4IH0gPSB1c2VDbGFzc2VzKGNsYXNzZXNQcm9wKTtcbiAgY29uc3QgbGFiZWxzID0gdXNlTGFiZWxzKERFRkFVTFRfTEFCRUxTLCBsYWJlbHNQcm9wKTtcblxuICBjb25zdCBlbGVtZW50SWQgPSB1c2VVbmlxdWVJZChpZCwgXCJodmRhdGVwaWNrZXJcIik7XG5cbiAgY29uc3QgW3ZhbGlkYXRpb25TdGF0ZSwgc2V0VmFsaWRhdGlvblN0YXRlXSA9IHVzZUNvbnRyb2xsZWQoXG4gICAgc3RhdHVzLFxuICAgIFwic3RhbmRCeVwiXG4gICk7XG5cbiAgY29uc3QgW3ZhbGlkYXRpb25NZXNzYWdlXSA9IHVzZUNvbnRyb2xsZWQoc3RhdHVzTWVzc2FnZSwgXCJSZXF1aXJlZFwiKTtcblxuICBjb25zdCBsb2NhbGUgPSBsb2NhbGVQcm9wIHx8IFwiZW4tVVNcIjtcblxuICBjb25zdCBbY2FsZW5kYXJPcGVuLCBzZXRDYWxlbmRhck9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IFtzdGFydERhdGUsIHNldFN0YXJ0RGF0ZSwgcm9sbGJhY2tTdGFydERhdGVdID0gdXNlU2F2ZWRTdGF0ZShcbiAgICByYW5nZU1vZGUgPyBzdGFydFZhbHVlIDogdmFsdWVcbiAgKTtcbiAgY29uc3QgW2VuZERhdGUsIHNldEVuZERhdGUsIHJvbGxiYWNrRW5kRGF0ZV0gPSB1c2VTYXZlZFN0YXRlKGVuZFZhbHVlKTtcblxuICBjb25zdCBbdmlzaWJsZURhdGUsIGRpc3BhdGNoQWN0aW9uXSA9IHVzZVZpc2libGVEYXRlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7XG5cbiAgY29uc3QgZm9jdXNUYXJnZXQgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IHsgYWN0aXZlVGhlbWUgfSA9IHVzZVRoZW1lKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTdGFydERhdGUocmFuZ2VNb2RlID8gc3RhcnRWYWx1ZSA6IHZhbHVlLCB0cnVlKTtcbiAgICBzZXRFbmREYXRlKGVuZFZhbHVlLCB0cnVlKTtcbiAgfSwgW3ZhbHVlLCBzdGFydFZhbHVlLCBlbmRWYWx1ZSwgcmFuZ2VNb2RlLCBzZXRTdGFydERhdGUsIHNldEVuZERhdGVdKTtcblxuICBjb25zdCBlbmREYXRlSXNTZXQgPSB1c2VSZWYoZmFsc2UpO1xuICBlbmREYXRlSXNTZXQuY3VycmVudCA9IGVuZERhdGUgIT0gbnVsbDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdGFydERhdGUgIT0gbnVsbCkge1xuICAgICAgZGlzcGF0Y2hBY3Rpb24oe1xuICAgICAgICB0eXBlOiBcIm1vbnRoX3llYXJcIixcbiAgICAgICAgdGFyZ2V0OiBlbmREYXRlSXNTZXQuY3VycmVudCA/IFwibGVmdFwiIDogXCJiZXN0XCIsXG4gICAgICAgIHllYXI6IHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICBtb250aDogc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxLFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbZGlzcGF0Y2hBY3Rpb24sIHN0YXJ0RGF0ZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGVuZERhdGUgIT0gbnVsbCkge1xuICAgICAgZGlzcGF0Y2hBY3Rpb24oe1xuICAgICAgICB0eXBlOiBcIm1vbnRoX3llYXJcIixcbiAgICAgICAgdGFyZ2V0OiBcInJpZ2h0XCIsXG4gICAgICAgIHllYXI6IGVuZERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgbW9udGg6IGVuZERhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtkaXNwYXRjaEFjdGlvbiwgZW5kRGF0ZV0pO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBgQXBwbHlgIGFjdGlvbi4gQm90aCBzaW5nbGUgYW5kIHJhbmdlZCBtb2RlcyBhcmUgaGFuZGxlZCBoZXJlLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlQXBwbHkgPSAoKSA9PiB7XG4gICAgc2V0U3RhcnREYXRlKHN0YXJ0RGF0ZSwgdHJ1ZSk7XG4gICAgc2V0RW5kRGF0ZShlbmREYXRlID8/IHN0YXJ0RGF0ZSwgdHJ1ZSk7XG5cbiAgICBvbkNoYW5nZT8uKHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7XG5cbiAgICBzZXRWYWxpZGF0aW9uU3RhdGUoKCkgPT4ge1xuICAgICAgLy8gdGhpcyB3aWxsIG9ubHkgcnVuIGlmIHN0YXR1cyBpcyB1bmNvbnRyb2xsZWRcbiAgICAgIGlmIChyZXF1aXJlZCAmJiAoIWlzRGF0ZShzdGFydERhdGUpIHx8IChyYW5nZU1vZGUgJiYgIWlzRGF0ZShlbmREYXRlKSkpKSB7XG4gICAgICAgIHJldHVybiBcImludmFsaWRcIjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFwidmFsaWRcIjtcbiAgICB9KTtcblxuICAgIHNldENhbGVuZGFyT3BlbihmYWxzZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGBDYW5jZWxgIGFjdGlvbi4gQm90aCBzaW5nbGUgYW5kIHJhbmdlZCBtb2RlcyBhcmUgaGFuZGxlZCBoZXJlLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIHJvbGxiYWNrU3RhcnREYXRlKCk7XG4gICAgcm9sbGJhY2tFbmREYXRlKCk7XG5cbiAgICBvbkNhbmNlbD8uKCk7XG5cbiAgICBzZXRDYWxlbmRhck9wZW4oZmFsc2UpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBgQ2FuY2VsYCBhY3Rpb24uIEJvdGggc2luZ2xlIGFuZCByYW5nZWQgbW9kZXMgYXJlIGhhbmRsZWQgaGVyZS5cbiAgICovXG4gIGNvbnN0IGhhbmRsZUNsZWFyID0gKCkgPT4ge1xuICAgIHNldFN0YXJ0RGF0ZSh1bmRlZmluZWQsIGZhbHNlKTtcbiAgICBzZXRFbmREYXRlKHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgIG9uQ2xlYXI/LigpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNhbGVuZGFyQ2xvc2UgPSAoKSA9PiB7XG4gICAgY29uc3Qgc2hvdWxkU2F2ZSA9ICEocmFuZ2VNb2RlIHx8IHNob3dBY3Rpb25zKTtcbiAgICBpZiAoc2hvdWxkU2F2ZSkge1xuICAgICAgaGFuZGxlQXBwbHkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlQ2FuY2VsKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZSA9IChldnQsIG9wZW4pID0+IHtcbiAgICAvKiBcbiAgICAgSWYgZXZ0IGlzIG51bGwgdGhpcyB0b2dnbGUgd2Fzbid0IHRyaWdnZXJlZCBieSB0aGUgdXNlci5cbiAgICAgaW5zdGVhZCBpdCB3YXMgdHJpZ2dlcmVkIGJ5IHRoZSBiYXNlRHJvcGRvd24gdXNlRWZmZWN0IGFmdGVyXG4gICAgIHRoZSBkYXRlcGlja2VyIGNoYW5nZWQgdGhlIGV4cGFuZGVkIHZhbHVlIHRoaXMgYmFzZURyb3Bkb3duIGJlaGF2aW9yIG5lZWRzIGEgcmV2aWV3XG4gICAgKi9cbiAgICBpZiAoZXZ0ID09PSBudWxsKSByZXR1cm47XG4gICAgc2V0Q2FsZW5kYXJPcGVuKG9wZW4pO1xuICAgIGlmICghb3BlbikgaGFuZGxlQ2FsZW5kYXJDbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IGZvY3VzT25Db250YWluZXIgPSAoKSA9PiB7XG4gICAgZm9jdXNUYXJnZXQuY3VycmVudD8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVEYXRlQ2hhbmdlID0gKGV2ZW50LCBuZXdEYXRlKSA9PiB7XG4gICAgaWYgKCFpc0RhdGUobmV3RGF0ZSkpIHJldHVybjtcblxuICAgIGNvbnN0IGF1dG9TYXZlID0gIXNob3dBY3Rpb25zICYmICFyYW5nZU1vZGU7XG5cbiAgICBpZiAocmFuZ2VNb2RlKSB7XG4gICAgICBpZiAoIXN0YXJ0RGF0ZSB8fCAoc3RhcnREYXRlICYmIGVuZERhdGUpIHx8IG5ld0RhdGUgPCBzdGFydERhdGUpIHtcbiAgICAgICAgc2V0U3RhcnREYXRlKG5ld0RhdGUpO1xuICAgICAgICBzZXRFbmREYXRlKHVuZGVmaW5lZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFbmREYXRlKG5ld0RhdGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTdGFydERhdGUobmV3RGF0ZSwgYXV0b1NhdmUpO1xuICAgIH1cblxuICAgIGlmIChhdXRvU2F2ZSkge1xuICAgICAgb25DaGFuZ2U/LihuZXdEYXRlKTtcblxuICAgICAgc2V0VmFsaWRhdGlvblN0YXRlKCgpID0+IHtcbiAgICAgICAgLy8gdGhpcyB3aWxsIG9ubHkgcnVuIGlmIHN0YXR1cyBpcyB1bmNvbnRyb2xsZWRcbiAgICAgICAgaWYgKHJlcXVpcmVkICYmICFpc0RhdGUobmV3RGF0ZSkpIHtcbiAgICAgICAgICByZXR1cm4gXCJpbnZhbGlkXCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gXCJ2YWxpZFwiO1xuICAgICAgfSk7XG5cbiAgICAgIHNldENhbGVuZGFyT3BlbihmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0RGF0ZUNoYW5nZSA9IChldmVudCwgbmV3RGF0ZSwgcG9zaXRpb24pID0+IHtcbiAgICBpZiAoIWlzRGF0ZShuZXdEYXRlKSkgcmV0dXJuO1xuXG4gICAgaWYgKCFyYW5nZU1vZGUpIHtcbiAgICAgIGhhbmRsZURhdGVDaGFuZ2UoZXZlbnQsIG5ld0RhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwb3NpdGlvbiA9PT0gXCJsZWZ0XCIpIHtcbiAgICAgIGlmIChlbmREYXRlKSBzZXRTdGFydERhdGUobmV3RGF0ZSA+IGVuZERhdGUgPyBlbmREYXRlIDogbmV3RGF0ZSk7XG4gICAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PT0gXCJyaWdodFwiKSB7XG4gICAgICBpZiAoIXN0YXJ0RGF0ZSkge1xuICAgICAgICBpZiAoZW5kRGF0ZSkgc2V0U3RhcnREYXRlKG5ld0RhdGUgPiBlbmREYXRlID8gZW5kRGF0ZSA6IG5ld0RhdGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzZXRFbmREYXRlKG5ld0RhdGUgPCBzdGFydERhdGUgPyBzdGFydERhdGUgOiBuZXdEYXRlKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGNvbnRhaW5lciBmb3IgdGhlIGFjdGlvbiBlbGVtZW50cy5cbiAgICovXG4gIGNvbnN0IHJlbmRlckFjdGlvbnMgPSAoKSA9PiAoXG4gICAgPEh2QWN0aW9uQmFyIGNsYXNzTmFtZT17Y3goeyBbY2xhc3Nlcy5hY3Rpb25Db250YWluZXJdOiBzaG93Q2xlYXIgfSl9PlxuICAgICAge3Nob3dDbGVhciAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmxlZnRDb250YWluZXJ9PlxuICAgICAgICAgIDxIdkJ1dHRvblxuICAgICAgICAgICAgaWQ9e3NldElkKGlkLCBcImFjdGlvblwiLCBcImNsZWFyXCIpfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmFjdGlvbn1cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5R2hvc3RcIlxuICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ2xlYXJ9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2xhYmVscz8uY2xlYXJMYWJlbH1cbiAgICAgICAgICA8L0h2QnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5yaWdodENvbnRhaW5lcn0+XG4gICAgICAgIDxIdkJ1dHRvblxuICAgICAgICAgIGlkPXtzZXRJZChpZCwgXCJhY3Rpb25cIiwgXCJhcHBseVwiKX1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuYWN0aW9ufVxuICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5R2hvc3RcIlxuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFwcGx5fVxuICAgICAgICA+XG4gICAgICAgICAge2xhYmVscz8uYXBwbHlMYWJlbH1cbiAgICAgICAgPC9IdkJ1dHRvbj5cbiAgICAgICAgPEh2QnV0dG9uXG4gICAgICAgICAgaWQ9e3NldElkKGlkLCBcImFjdGlvblwiLCBcImNhbmNlbFwiKX1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuYWN0aW9ufVxuICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5R2hvc3RcIlxuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbHM/LmNhbmNlbExhYmVsfVxuICAgICAgICA8L0h2QnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9IdkFjdGlvbkJhcj5cbiAgKTtcblxuICBjb25zdCBzdHlsZWRUeXBvZ3JhcGh5ID0gKGRhdGVTdHJpbmcsIHZhcmlhbnQsIHRleHQpID0+IHtcbiAgICBjb25zdCBTdHlsZWRUeXBvZ3JhcGh5ID0gc3R5bGVkKEh2VHlwb2dyYXBoeSkoe1xuICAgICAgY29sb3I6IGRhdGVTdHJpbmdcbiAgICAgICAgPyB0aGVtZS5jb2xvcnMuc2Vjb25kYXJ5XG4gICAgICAgIDogdGhlbWUuZGF0ZVBpY2tlci5kcm9wZG93blBsYWNlaG9sZGVyQ29sb3IsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gPFN0eWxlZFR5cG9ncmFwaHkgdmFyaWFudD17dmFyaWFudH0+e3RleHR9PC9TdHlsZWRUeXBvZ3JhcGh5PjtcbiAgfTtcblxuICBjb25zdCByZW5kZXJJbnB1dCA9IChkYXRlU3RyaW5nKSA9PlxuICAgIHN0eWxlZFR5cG9ncmFwaHkoXG4gICAgICBkYXRlU3RyaW5nLFxuICAgICAgYWN0aXZlVGhlbWU/LmRhdGVQaWNrZXIucGxhY2Vob2xkZXJWYXJpYW50LFxuICAgICAgKGRhdGVTdHJpbmcgfHwgcGxhY2Vob2xkZXIpID09PSB1bmRlZmluZWQgPyBcIlwiIDogZGF0ZVN0cmluZyB8fCBwbGFjZWhvbGRlclxuICAgICk7XG5cbiAgY29uc3QgZGF0ZVZhbHVlID0gcmFuZ2VNb2RlID8geyBzdGFydERhdGUsIGVuZERhdGUgfSA6IHN0YXJ0RGF0ZTtcblxuICBjb25zdCBoYXNMYWJlbCA9IGxhYmVsICE9IG51bGw7XG4gIGNvbnN0IGhhc0Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24gIT0gbnVsbDtcblxuICAvLyB0aGUgZXJyb3IgbWVzc2FnZSBhcmVhIHdpbGwgb25seSBiZSBjcmVhdGVkIGlmOlxuICAvLyAtIGFuIGV4dGVybmFsIGVsZW1lbnQgdGhhdCBwcm92aWRlcyBhbiBlcnJvciBtZXNzYWdlIGlzbid0IGlkZW50aWZpZWQgdmlhIGFyaWEtZXJyb3JtZXNzYWdlIEFORFxuICAvLyAgIC0gYm90aCBzdGF0dXMgYW5kIHN0YXR1c01lc3NhZ2UgcHJvcGVydGllcyBhcmUgYmVpbmcgY29udHJvbGxlZCBPUlxuICAvLyAgIC0gc3RhdHVzIGlzIHVuY29udHJvbGxlZCBhbmQgcmVxdWlyZWQgaXMgdHJ1ZVxuICBjb25zdCBjYW5TaG93RXJyb3IgPVxuICAgIGFyaWFFcnJvck1lc3NhZ2UgPT0gbnVsbCAmJlxuICAgICgoc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgc3RhdHVzTWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB8fFxuICAgICAgKHN0YXR1cyA9PT0gdW5kZWZpbmVkICYmIHJlcXVpcmVkKSk7XG5cbiAgY29uc3QgaXNTdGF0ZUludmFsaWQgPSBpc0ludmFsaWQodmFsaWRhdGlvblN0YXRlKTtcblxuICBsZXQgZXJyb3JNZXNzYWdlSWQ7XG4gIGlmIChpc1N0YXRlSW52YWxpZCkge1xuICAgIGVycm9yTWVzc2FnZUlkID0gY2FuU2hvd0Vycm9yXG4gICAgICA/IHNldElkKGVsZW1lbnRJZCwgXCJlcnJvclwiKVxuICAgICAgOiBhcmlhRXJyb3JNZXNzYWdlO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8SHZGb3JtRWxlbWVudFxuICAgICAgaWQ9e2lkfVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIHZhbHVlPXtkYXRlVmFsdWV9XG4gICAgICBzdGF0dXM9e3ZhbGlkYXRpb25TdGF0ZX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIHJlcXVpcmVkPXtyZXF1aXJlZH1cbiAgICAgIGNsYXNzTmFtZT17Y3goY2xhc3NOYW1lLCBjbGFzc2VzLnJvb3QpfVxuICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5fVxuICAgICAgey4uLm90aGVyc31cbiAgICA+XG4gICAgICB7KGhhc0xhYmVsIHx8IGhhc0Rlc2NyaXB0aW9uKSAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmxhYmVsQ29udGFpbmVyfT5cbiAgICAgICAgICB7aGFzTGFiZWwgJiYgKFxuICAgICAgICAgICAgPEh2TGFiZWxcbiAgICAgICAgICAgICAgaWQ9e3NldElkKGVsZW1lbnRJZCwgXCJsYWJlbFwiKX1cbiAgICAgICAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7aGFzRGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgPEh2SW5mb01lc3NhZ2VcbiAgICAgICAgICAgICAgaWQ9e3NldElkKGVsZW1lbnRJZCwgXCJkZXNjcmlwdGlvblwiKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7ZGVzY3JpcHRpb259XG4gICAgICAgICAgICA8L0h2SW5mb01lc3NhZ2U+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgPEh2QmFzZURyb3Bkb3duXG4gICAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICAgIGNsYXNzZXM9e3tcbiAgICAgICAgICByb290OiBjbGFzc2VzLmRyb3Bkb3duLFxuICAgICAgICAgIHBhbmVsOiBjbGFzc2VzLnBhbmVsLFxuICAgICAgICAgIGhlYWRlcjogY3goeyBbY2xhc3Nlcy5kcm9wZG93bkhlYWRlckludmFsaWRdOiBpc1N0YXRlSW52YWxpZCB9KSxcbiAgICAgICAgICBoZWFkZXJPcGVuOiBjbGFzc2VzLmRyb3Bkb3duSGVhZGVyT3BlbixcbiAgICAgICAgfX1cbiAgICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5fVxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIGRpc2FibGVQb3J0YWw9e2Rpc2FibGVQb3J0YWx9XG4gICAgICAgIHZhcmlhYmxlV2lkdGhcbiAgICAgICAgcGxhY2VtZW50PXtob3Jpem9udGFsUGxhY2VtZW50fVxuICAgICAgICBleHBhbmRlZD17Y2FsZW5kYXJPcGVufVxuICAgICAgICBvblRvZ2dsZT17aGFuZGxlVG9nZ2xlfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17aGFuZGxlQ2FsZW5kYXJDbG9zZX1cbiAgICAgICAgb25Db250YWluZXJDcmVhdGlvbj17Zm9jdXNPbkNvbnRhaW5lcn1cbiAgICAgICAgcGxhY2Vob2xkZXI9e3JlbmRlcklucHV0KGdldERhdGVMYWJlbChkYXRlVmFsdWUsIHJhbmdlTW9kZSwgbG9jYWxlKSl9XG4gICAgICAgIGFkb3JubWVudD17XG4gICAgICAgICAgPENhbGVuZGFyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuaWNvbn1cbiAgICAgICAgICAgIGNvbG9yPXtkaXNhYmxlZCA/IFwic2Vjb25kYXJ5XzgwXCIgOiB1bmRlZmluZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICBwb3BwZXJQcm9wcz17e1xuICAgICAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICAgICAgeyBuYW1lOiBcInByZXZlbnRPdmVyZmxvd1wiLCBlbmFibGVkOiBlc2NhcGVXaXRoUmVmZXJlbmNlIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfX1cbiAgICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXG4gICAgICAgIGFyaWEtbGFiZWw9e2FyaWFMYWJlbH1cbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtcbiAgICAgICAgICBbbGFiZWwgJiYgc2V0SWQoZWxlbWVudElkLCBcImxhYmVsXCIpLCBhcmlhTGFiZWxsZWRCeV1cbiAgICAgICAgICAgIC5qb2luKFwiIFwiKVxuICAgICAgICAgICAgLnRyaW0oKSB8fCB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBhcmlhLWludmFsaWQ9e2lzU3RhdGVJbnZhbGlkID8gdHJ1ZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgYXJpYS1lcnJvcm1lc3NhZ2U9e2Vycm9yTWVzc2FnZUlkfVxuICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PXtcbiAgICAgICAgICBbZGVzY3JpcHRpb24gJiYgc2V0SWQoZWxlbWVudElkLCBcImRlc2NyaXB0aW9uXCIpLCBhcmlhRGVzY3JpYmVkQnldXG4gICAgICAgICAgICAuam9pbihcIiBcIilcbiAgICAgICAgICAgIC50cmltKCkgfHwgdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICAgey4uLmRyb3Bkb3duUHJvcHN9XG4gICAgICA+XG4gICAgICAgIDxkaXYgcmVmPXtmb2N1c1RhcmdldH0gdGFiSW5kZXg9ey0xfSAvPlxuICAgICAgICA8SHZDYWxlbmRhclxuICAgICAgICAgIGlkPXtzZXRJZChpZCwgXCJjYWxlbmRhclwiKX1cbiAgICAgICAgICBzdGFydEFkb3JubWVudD17c3RhcnRBZG9ybm1lbnR9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZURhdGVDaGFuZ2V9XG4gICAgICAgICAgb25JbnB1dENoYW5nZT17aGFuZGxlSW5wdXREYXRlQ2hhbmdlfVxuICAgICAgICAgIG9uVmlzaWJsZURhdGVDaGFuZ2U9eyhfZXZlbnQsIHR5cGUsIG1vbnRoLCB0YXJnZXQpID0+IHtcbiAgICAgICAgICAgIGRpc3BhdGNoQWN0aW9uKHsgdHlwZSwgdGFyZ2V0LCBtb250aCB9KTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgIHsuLi52aXNpYmxlRGF0ZX1cbiAgICAgICAgICB7Li4uY2FsZW5kYXJQcm9wc31cbiAgICAgICAgICBpbnZhbGlkRGF0ZUxhYmVsPXtsYWJlbHM/LmludmFsaWREYXRlTGFiZWx9XG4gICAgICAgIC8+XG4gICAgICAgIHsocmFuZ2VNb2RlIHx8IHNob3dBY3Rpb25zKSAmJiByZW5kZXJBY3Rpb25zKCl9XG4gICAgICA8L0h2QmFzZURyb3Bkb3duPlxuICAgICAge2NhblNob3dFcnJvciAmJiAoXG4gICAgICAgIDxIdldhcm5pbmdUZXh0XG4gICAgICAgICAgaWQ9e3NldElkKGVsZW1lbnRJZCwgXCJlcnJvclwiKX1cbiAgICAgICAgICBkaXNhYmxlQm9yZGVyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjeChjbGFzc2VzLmVycm9yKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt2YWxpZGF0aW9uTWVzc2FnZX1cbiAgICAgICAgPC9Idldhcm5pbmdUZXh0PlxuICAgICAgKX1cbiAgICA8L0h2Rm9ybUVsZW1lbnQ+XG4gICk7XG59O1xuIl19 */");
|
|
237
237
|
return /* @__PURE__ */ jsx(StyledTypography, {
|
|
238
238
|
variant,
|
|
239
239
|
children: text
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { useState, useEffect, useRef } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { Calendar } from \"@hitachivantara/uikit-react-icons\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport {\n HvCalendar,\n HvInfoMessage,\n HvWarningText,\n HvCalendarProps,\n HvActionBar,\n HvButton,\n HvFormElement,\n HvTypography,\n HvBaseDropdown,\n HvLabel,\n} from \"@core/components\";\nimport { useControlled, useLabels, useTheme, useUniqueId } from \"@core/hooks\";\nimport { HvBaseProps } from \"@core/types\";\nimport { ExtractNames, setId, useSavedState } from \"@core/utils\";\nimport { isInvalid } from \"../Forms/FormElement/validationStates\";\nimport { isDate } from \"../Calendar/utils\";\nimport { getDateLabel } from \"./utils\";\nimport useVisibleDate from \"./useVisibleDate\";\nimport { staticClasses, useClasses } from \"./DatePicker.styles\";\n\nexport { staticClasses as datePickerClasses };\n\nexport type HvDatePickerClasses = ExtractNames<typeof useClasses>;\n\nconst DEFAULT_LABELS = {\n applyLabel: \"Apply\",\n cancelLabel: \"Cancel\",\n clearLabel: \"Clear\",\n invalidLabel: \"Invalid date\",\n};\n\nexport type HvDatePickerStatus = \"standBy\" | \"valid\" | \"invalid\";\n\nexport interface HvDatePickerProps\n extends HvBaseProps<HTMLDivElement, \"onChange\"> {\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvDatePickerClasses;\n /**\n * Id to be applied to the form element root node.\n */\n id?: string;\n\n /**\n * The form element name.\n */\n name?: string;\n /**\n * The label of the form element.\n *\n * The form element must be labeled for accessibility reasons.\n * If not provided, an aria-label or aria-labelledby must be provided instead.\n */\n label?: React.ReactNode;\n /**\n * @ignore\n */\n \"aria-label\"?: string;\n /**\n * @ignore\n */\n \"aria-labelledby\"?: string;\n /**\n * Provide additional descriptive text for the form element.\n */\n description?: React.ReactNode;\n /**\n * @ignore\n */\n \"aria-describedby\"?: string;\n /**\n * The placeholder value when nothing is selected.\n */\n placeholder?: string;\n\n /**\n * Indicates that the form element is disabled.\n */\n disabled?: boolean;\n /**\n * Indicates that user input is required on the form element.\n */\n required?: boolean;\n\n /**\n * The status of the form element.\n *\n * Valid is correct, invalid is incorrect and standBy means no validations have run.\n *\n * When uncontrolled and unspecified it will default to \"standBy\" and change to either \"valid\"\n * or \"invalid\" after any change to the state.\n */\n status?: HvDatePickerStatus;\n /**\n * The error message to show when the validation status is \"invalid\".\n *\n * Defaults to \"Required\" when the status is uncontrolled and no `aria-errormessage` is provided.\n */\n statusMessage?: React.ReactNode;\n /**\n * Identifies the element that provides an error message for the date picker.\n *\n * Will only be used when the validation status is invalid.\n */\n \"aria-errormessage\"?: string;\n\n /**\n * The callback fired when the value changes.\n */\n onChange?: (date?: Date, endDate?: Date) => void;\n /**\n * The callback fired when user clicks on cancel.\n */\n onCancel?: () => void;\n /**\n * The callback fired when user clicks on clear.\n */\n onClear?: () => void;\n /**\n * An object containing all the labels for the datepicker.\n */\n labels?: {\n /**\n * Apply button label.\n */\n applyLabel?: string;\n /**\n * Cancel button label.\n */\n cancelLabel?: string;\n /**\n * Clear button label.\n */\n clearLabel?: string;\n /**\n * Invalid Date label.\n */\n invalidDateLabel?: string;\n };\n\n /**\n * The initial value of the input when in single calendar mode.\n */\n value?: Date;\n /**\n * The initial value for the start date when in range mode.\n */\n startValue?: Date;\n /**\n * The initial value for the end date when in range mode.\n */\n endValue?: Date;\n /**\n * Flag informing if the the component should be in range mode or in single mode.\n * TODO: remove this in favour of discriminated union\n */\n rangeMode?: boolean;\n /**\n * The placement where the calendar should be placed according to the input. Options are `left` or `right`.\n * Note this prop only affects the calendar when in `rangeMode`.\n */\n horizontalPlacement?: \"left\" | \"right\";\n /**\n * The calendar locale. If undefined, it uses calendar default\n */\n locale?: string;\n\n /**\n * Controls if actions buttons are visible at the calendar.\n */\n showActions?: boolean;\n /**\n * Controls if clear button is visible at the calendar,\n * only works if showing actions or in range mode.\n */\n showClear?: boolean;\n /**\n * Disable the portal behavior. The children stay within it's parent DOM hierarchy.\n */\n disablePortal?: boolean;\n /**\n * Sets if the calendar container should follow the date picker input out of the screen or stay visible.\n */\n escapeWithReference?: boolean;\n /**\n * An element placed before the Calendar\n */\n startAdornment?: React.ReactNode;\n /**\n * An object containing props to be passed onto the baseDropdown.\n */\n dropdownProps?: Object;\n /**\n * If `true` the DatePicker will be in read only mode, unable to be interacted.\n */\n readOnly?: boolean;\n /**\n * Additional props passed to the HvCalendar component.\n */\n calendarProps?: Partial<HvCalendarProps>;\n}\n\n/**\n * A date picker, popup calendar or date range picker is a graphical user\n * interface widget which allows the user to select a date from a calendar.\n */\nexport const HvDatePicker = ({\n classes: classesProp,\n className,\n\n id,\n name,\n\n required = false,\n disabled = false,\n readOnly,\n\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n\n onChange,\n onCancel,\n onClear,\n status,\n statusMessage,\n \"aria-errormessage\": ariaErrorMessage,\n\n placeholder,\n\n labels: labelsProp,\n\n value,\n startValue,\n endValue,\n\n rangeMode = false,\n startAdornment,\n horizontalPlacement = \"right\",\n locale: localeProp,\n showActions = false,\n showClear = false,\n disablePortal = true,\n escapeWithReference = true,\n dropdownProps,\n calendarProps,\n ...others\n}: HvDatePickerProps) => {\n const { classes, cx } = useClasses(classesProp);\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const elementId = useUniqueId(id, \"hvdatepicker\");\n\n const [validationState, setValidationState] = useControlled(\n status,\n \"standBy\"\n );\n\n const [validationMessage] = useControlled(statusMessage, \"Required\");\n\n const locale = localeProp || \"en-US\";\n\n const [calendarOpen, setCalendarOpen] = useState(false);\n\n const [startDate, setStartDate, rollbackStartDate] = useSavedState(\n rangeMode ? startValue : value\n );\n const [endDate, setEndDate, rollbackEndDate] = useSavedState(endValue);\n\n const [visibleDate, dispatchAction] = useVisibleDate(startDate, endDate);\n\n const focusTarget = useRef<HTMLDivElement>(null);\n\n const { activeTheme } = useTheme();\n\n useEffect(() => {\n setStartDate(rangeMode ? startValue : value, true);\n setEndDate(endValue, true);\n }, [value, startValue, endValue, rangeMode]);\n\n const endDateIsSet = useRef(false);\n endDateIsSet.current = endDate != null;\n\n useEffect(() => {\n if (startDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: endDateIsSet.current ? \"left\" : \"best\",\n year: startDate.getFullYear(),\n month: startDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, startDate]);\n\n useEffect(() => {\n if (endDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: \"right\",\n year: endDate.getFullYear(),\n month: endDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, endDate]);\n\n /**\n * Handles the `Apply` action. Both single and ranged modes are handled here.\n */\n const handleApply = () => {\n setStartDate(startDate, true);\n setEndDate(endDate ?? startDate, true);\n\n onChange?.(startDate, endDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && (!isDate(startDate) || (rangeMode && !isDate(endDate)))) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleCancel = () => {\n rollbackStartDate();\n rollbackEndDate();\n\n onCancel?.();\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleClear = () => {\n setStartDate(undefined, false);\n setEndDate(undefined, false);\n onClear?.();\n };\n\n const handleCalendarClose = () => {\n const shouldSave = !(rangeMode || showActions);\n if (shouldSave) {\n handleApply();\n } else {\n handleCancel();\n }\n };\n\n const handleToggle = (evt, open) => {\n /* \n If evt is null this toggle wasn't triggered by the user.\n instead it was triggered by the baseDropdown useEffect after\n the datepicker changed the expanded value this baseDropdown behavior needs a review\n */\n if (evt === null) return;\n setCalendarOpen(open);\n if (!open) handleCalendarClose();\n };\n\n const focusOnContainer = () => {\n focusTarget.current?.focus();\n };\n\n const handleDateChange = (event, newDate) => {\n if (!isDate(newDate)) return;\n\n const autoSave = !showActions && !rangeMode;\n\n if (rangeMode) {\n if (!startDate || (startDate && endDate) || newDate < startDate) {\n setStartDate(newDate);\n setEndDate(undefined);\n } else {\n setEndDate(newDate);\n }\n } else {\n setStartDate(newDate, autoSave);\n }\n\n if (autoSave) {\n onChange?.(newDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && !isDate(newDate)) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n }\n };\n\n const handleInputDateChange = (event, newDate, position) => {\n if (!isDate(newDate)) return;\n\n if (!rangeMode) {\n handleDateChange(event, newDate);\n return;\n }\n\n if (position === \"left\") {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n } else if (position === \"right\") {\n if (!startDate) {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n return;\n }\n setEndDate(newDate < startDate ? startDate : newDate);\n }\n };\n\n /**\n * Renders the container for the action elements.\n */\n const renderActions = () => (\n <HvActionBar className={cx({ [classes.actionContainer]: showClear })}>\n {showClear && (\n <div className={classes.leftContainer}>\n <HvButton\n id={setId(id, \"action\", \"clear\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleClear}\n >\n {labels?.clearLabel}\n </HvButton>\n </div>\n )}\n <div className={classes.rightContainer}>\n <HvButton\n id={setId(id, \"action\", \"apply\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleApply}\n >\n {labels?.applyLabel}\n </HvButton>\n <HvButton\n id={setId(id, \"action\", \"cancel\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleCancel}\n >\n {labels?.cancelLabel}\n </HvButton>\n </div>\n </HvActionBar>\n );\n\n const styledTypography = (dateString, variant, text) => {\n const StyledTypography = styled(HvTypography)({\n color: dateString\n ? theme.colors.secondary\n : theme.datePicker.dropdownPlaceholderColor,\n });\n\n return <StyledTypography variant={variant}>{text}</StyledTypography>;\n };\n\n const renderInput = (dateString) =>\n styledTypography(\n dateString,\n activeTheme?.datePicker.placeholderVariant,\n (dateString || placeholder) === undefined ? \"\" : dateString || placeholder\n );\n\n const dateValue = rangeMode ? { startDate, endDate } : startDate;\n\n const hasLabel = label != null;\n const hasDescription = description != null;\n\n // the error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and required is true\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined && required));\n\n const isStateInvalid = isInvalid(validationState);\n\n let errorMessageId;\n if (isStateInvalid) {\n errorMessageId = canShowError\n ? setId(elementId, \"error\")\n : ariaErrorMessage;\n }\n\n return (\n <HvFormElement\n id={id}\n name={name}\n value={dateValue}\n status={validationState}\n disabled={disabled}\n required={required}\n className={cx(className, classes.root)}\n readOnly={readOnly}\n {...others}\n >\n {(hasLabel || hasDescription) && (\n <div className={classes.labelContainer}>\n {hasLabel && (\n <HvLabel\n id={setId(elementId, \"label\")}\n label={label}\n className={classes.label}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage\n id={setId(elementId, \"description\")}\n className={classes.description}\n >\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n <HvBaseDropdown\n role=\"combobox\"\n classes={{\n root: classes.dropdown,\n panel: classes.panel,\n header: cx({ [classes.dropdownHeaderInvalid]: isStateInvalid }),\n headerOpen: classes.dropdownHeaderOpen,\n }}\n readOnly={readOnly}\n disabled={disabled}\n disablePortal={disablePortal}\n variableWidth\n placement={horizontalPlacement}\n expanded={calendarOpen}\n onToggle={handleToggle}\n onClickOutside={handleCalendarClose}\n onContainerCreation={focusOnContainer}\n placeholder={renderInput(getDateLabel(dateValue, rangeMode, locale))}\n adornment={\n <Calendar\n className={classes.icon}\n color={disabled ? \"secondary_80\" : undefined}\n />\n }\n popperProps={{\n modifiers: [\n { name: \"preventOverflow\", enabled: escapeWithReference },\n ],\n }}\n aria-haspopup=\"dialog\"\n aria-label={ariaLabel}\n aria-labelledby={\n [label && setId(elementId, \"label\"), ariaLabelledBy]\n .join(\" \")\n .trim() || undefined\n }\n aria-invalid={isStateInvalid ? true : undefined}\n aria-errormessage={errorMessageId}\n aria-describedby={\n [description && setId(elementId, \"description\"), ariaDescribedBy]\n .join(\" \")\n .trim() || undefined\n }\n {...dropdownProps}\n >\n <div ref={focusTarget} tabIndex={-1} />\n <HvCalendar\n id={setId(id, \"calendar\")}\n startAdornment={startAdornment}\n onChange={handleDateChange}\n onInputChange={handleInputDateChange}\n onVisibleDateChange={(_event, type, month, target) => {\n dispatchAction({ type, target, month });\n }}\n locale={locale}\n {...visibleDate}\n {...calendarProps}\n invalidDateLabel={labels?.invalidDateLabel}\n />\n {(rangeMode || showActions) && renderActions()}\n </HvBaseDropdown>\n {canShowError && (\n <HvWarningText\n id={setId(elementId, \"error\")}\n disableBorder\n className={cx(classes.error)}\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n );\n};\n"],"names":["DEFAULT_LABELS","applyLabel","cancelLabel","clearLabel","invalidLabel","HvDatePicker","classes","classesProp","className","id","name","required","disabled","readOnly","label","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","onChange","onCancel","onClear","status","statusMessage","ariaErrorMessage","placeholder","labels","labelsProp","value","startValue","endValue","rangeMode","startAdornment","horizontalPlacement","locale","localeProp","showActions","showClear","disablePortal","escapeWithReference","dropdownProps","calendarProps","others","cx","useClasses","useLabels","elementId","useUniqueId","validationState","setValidationState","useControlled","validationMessage","calendarOpen","setCalendarOpen","useState","startDate","setStartDate","rollbackStartDate","useSavedState","endDate","setEndDate","rollbackEndDate","visibleDate","dispatchAction","useVisibleDate","focusTarget","useRef","activeTheme","useTheme","useEffect","endDateIsSet","current","type","target","year","getFullYear","month","getMonth","handleApply","isDate","handleCancel","handleClear","undefined","handleCalendarClose","shouldSave","handleToggle","evt","open","focusOnContainer","focus","handleDateChange","event","newDate","autoSave","handleInputDateChange","position","renderActions","_jsxs","HvActionBar","actionContainer","children","_jsx","leftContainer","HvButton","setId","action","variant","onClick","rightContainer","styledTypography","dateString","text","StyledTypography","HvTypography","process","env","NODE_ENV","color","theme","colors","secondary","datePicker","dropdownPlaceholderColor","renderInput","placeholderVariant","dateValue","hasLabel","hasDescription","canShowError","isStateInvalid","isInvalid","errorMessageId","HvFormElement","root","labelContainer","HvLabel","HvInfoMessage","HvBaseDropdown","role","dropdown","panel","header","dropdownHeaderInvalid","headerOpen","dropdownHeaderOpen","variableWidth","placement","expanded","onToggle","onClickOutside","onContainerCreation","getDateLabel","adornment","Calendar","icon","popperProps","modifiers","enabled","join","trim","ref","tabIndex","HvCalendar","onInputChange","onVisibleDateChange","_event","invalidDateLabel","HvWarningText","disableBorder","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatePicker.js","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { useState, useEffect, useRef } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { Calendar } from \"@hitachivantara/uikit-react-icons\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport {\n HvCalendar,\n HvInfoMessage,\n HvWarningText,\n HvCalendarProps,\n HvActionBar,\n HvButton,\n HvFormElement,\n HvTypography,\n HvBaseDropdown,\n HvLabel,\n HvFormStatus,\n} from \"@core/components\";\nimport { useControlled, useLabels, useTheme, useUniqueId } from \"@core/hooks\";\nimport { HvBaseProps } from \"@core/types\";\nimport { ExtractNames, setId, useSavedState } from \"@core/utils\";\nimport { isInvalid } from \"../Forms/FormElement/validationStates\";\nimport { isDate } from \"../Calendar/utils\";\nimport { getDateLabel } from \"./utils\";\nimport useVisibleDate from \"./useVisibleDate\";\nimport { staticClasses, useClasses } from \"./DatePicker.styles\";\n\nexport { staticClasses as datePickerClasses };\n\nexport type HvDatePickerClasses = ExtractNames<typeof useClasses>;\n\nconst DEFAULT_LABELS = {\n applyLabel: \"Apply\",\n cancelLabel: \"Cancel\",\n clearLabel: \"Clear\",\n invalidLabel: \"Invalid date\",\n};\n\n/** @deprecated use `HvFormStatus` instead */\nexport type HvDatePickerStatus = HvFormStatus;\n\nexport interface HvDatePickerProps\n extends HvBaseProps<HTMLDivElement, \"onChange\"> {\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvDatePickerClasses;\n /**\n * Id to be applied to the form element root node.\n */\n id?: string;\n\n /**\n * The form element name.\n */\n name?: string;\n /**\n * The label of the form element.\n *\n * The form element must be labeled for accessibility reasons.\n * If not provided, an aria-label or aria-labelledby must be provided instead.\n */\n label?: React.ReactNode;\n /**\n * @ignore\n */\n \"aria-label\"?: string;\n /**\n * @ignore\n */\n \"aria-labelledby\"?: string;\n /**\n * Provide additional descriptive text for the form element.\n */\n description?: React.ReactNode;\n /**\n * @ignore\n */\n \"aria-describedby\"?: string;\n /**\n * The placeholder value when nothing is selected.\n */\n placeholder?: string;\n\n /**\n * Indicates that the form element is disabled.\n */\n disabled?: boolean;\n /**\n * Indicates that user input is required on the form element.\n */\n required?: boolean;\n\n /**\n * The status of the form element.\n *\n * Valid is correct, invalid is incorrect and standBy means no validations have run.\n *\n * When uncontrolled and unspecified it will default to \"standBy\" and change to either \"valid\"\n * or \"invalid\" after any change to the state.\n */\n status?: HvFormStatus;\n /**\n * The error message to show when the validation status is \"invalid\".\n *\n * Defaults to \"Required\" when the status is uncontrolled and no `aria-errormessage` is provided.\n */\n statusMessage?: React.ReactNode;\n /**\n * Identifies the element that provides an error message for the date picker.\n *\n * Will only be used when the validation status is invalid.\n */\n \"aria-errormessage\"?: string;\n\n /**\n * The callback fired when the value changes.\n */\n onChange?: (date?: Date, endDate?: Date) => void;\n /**\n * The callback fired when user clicks on cancel.\n */\n onCancel?: () => void;\n /**\n * The callback fired when user clicks on clear.\n */\n onClear?: () => void;\n /**\n * An object containing all the labels for the datepicker.\n */\n labels?: {\n /**\n * Apply button label.\n */\n applyLabel?: string;\n /**\n * Cancel button label.\n */\n cancelLabel?: string;\n /**\n * Clear button label.\n */\n clearLabel?: string;\n /**\n * Invalid Date label.\n */\n invalidDateLabel?: string;\n };\n\n /**\n * The initial value of the input when in single calendar mode.\n */\n value?: Date;\n /**\n * The initial value for the start date when in range mode.\n */\n startValue?: Date;\n /**\n * The initial value for the end date when in range mode.\n */\n endValue?: Date;\n /**\n * Flag informing if the the component should be in range mode or in single mode.\n * TODO: remove this in favour of discriminated union\n */\n rangeMode?: boolean;\n /**\n * The placement where the calendar should be placed according to the input. Options are `left` or `right`.\n * Note this prop only affects the calendar when in `rangeMode`.\n */\n horizontalPlacement?: \"left\" | \"right\";\n /**\n * The calendar locale. If undefined, it uses calendar default\n */\n locale?: string;\n\n /**\n * Controls if actions buttons are visible at the calendar.\n */\n showActions?: boolean;\n /**\n * Controls if clear button is visible at the calendar,\n * only works if showing actions or in range mode.\n */\n showClear?: boolean;\n /**\n * Disable the portal behavior. The children stay within it's parent DOM hierarchy.\n */\n disablePortal?: boolean;\n /**\n * Sets if the calendar container should follow the date picker input out of the screen or stay visible.\n */\n escapeWithReference?: boolean;\n /**\n * An element placed before the Calendar\n */\n startAdornment?: React.ReactNode;\n /**\n * An object containing props to be passed onto the baseDropdown.\n */\n dropdownProps?: Object;\n /**\n * If `true` the DatePicker will be in read only mode, unable to be interacted.\n */\n readOnly?: boolean;\n /**\n * Additional props passed to the HvCalendar component.\n */\n calendarProps?: Partial<HvCalendarProps>;\n}\n\n/**\n * A date picker, popup calendar or date range picker is a graphical user\n * interface widget which allows the user to select a date from a calendar.\n */\nexport const HvDatePicker = ({\n classes: classesProp,\n className,\n\n id,\n name,\n\n required = false,\n disabled = false,\n readOnly,\n\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n\n onChange,\n onCancel,\n onClear,\n status,\n statusMessage,\n \"aria-errormessage\": ariaErrorMessage,\n\n placeholder,\n\n labels: labelsProp,\n\n value,\n startValue,\n endValue,\n\n rangeMode = false,\n startAdornment,\n horizontalPlacement = \"right\",\n locale: localeProp,\n showActions = false,\n showClear = false,\n disablePortal = true,\n escapeWithReference = true,\n dropdownProps,\n calendarProps,\n ...others\n}: HvDatePickerProps) => {\n const { classes, cx } = useClasses(classesProp);\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const elementId = useUniqueId(id, \"hvdatepicker\");\n\n const [validationState, setValidationState] = useControlled(\n status,\n \"standBy\"\n );\n\n const [validationMessage] = useControlled(statusMessage, \"Required\");\n\n const locale = localeProp || \"en-US\";\n\n const [calendarOpen, setCalendarOpen] = useState(false);\n\n const [startDate, setStartDate, rollbackStartDate] = useSavedState(\n rangeMode ? startValue : value\n );\n const [endDate, setEndDate, rollbackEndDate] = useSavedState(endValue);\n\n const [visibleDate, dispatchAction] = useVisibleDate(startDate, endDate);\n\n const focusTarget = useRef<HTMLDivElement>(null);\n\n const { activeTheme } = useTheme();\n\n useEffect(() => {\n setStartDate(rangeMode ? startValue : value, true);\n setEndDate(endValue, true);\n }, [value, startValue, endValue, rangeMode, setStartDate, setEndDate]);\n\n const endDateIsSet = useRef(false);\n endDateIsSet.current = endDate != null;\n\n useEffect(() => {\n if (startDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: endDateIsSet.current ? \"left\" : \"best\",\n year: startDate.getFullYear(),\n month: startDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, startDate]);\n\n useEffect(() => {\n if (endDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: \"right\",\n year: endDate.getFullYear(),\n month: endDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, endDate]);\n\n /**\n * Handles the `Apply` action. Both single and ranged modes are handled here.\n */\n const handleApply = () => {\n setStartDate(startDate, true);\n setEndDate(endDate ?? startDate, true);\n\n onChange?.(startDate, endDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && (!isDate(startDate) || (rangeMode && !isDate(endDate)))) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleCancel = () => {\n rollbackStartDate();\n rollbackEndDate();\n\n onCancel?.();\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleClear = () => {\n setStartDate(undefined, false);\n setEndDate(undefined, false);\n onClear?.();\n };\n\n const handleCalendarClose = () => {\n const shouldSave = !(rangeMode || showActions);\n if (shouldSave) {\n handleApply();\n } else {\n handleCancel();\n }\n };\n\n const handleToggle = (evt, open) => {\n /* \n If evt is null this toggle wasn't triggered by the user.\n instead it was triggered by the baseDropdown useEffect after\n the datepicker changed the expanded value this baseDropdown behavior needs a review\n */\n if (evt === null) return;\n setCalendarOpen(open);\n if (!open) handleCalendarClose();\n };\n\n const focusOnContainer = () => {\n focusTarget.current?.focus();\n };\n\n const handleDateChange = (event, newDate) => {\n if (!isDate(newDate)) return;\n\n const autoSave = !showActions && !rangeMode;\n\n if (rangeMode) {\n if (!startDate || (startDate && endDate) || newDate < startDate) {\n setStartDate(newDate);\n setEndDate(undefined);\n } else {\n setEndDate(newDate);\n }\n } else {\n setStartDate(newDate, autoSave);\n }\n\n if (autoSave) {\n onChange?.(newDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && !isDate(newDate)) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n }\n };\n\n const handleInputDateChange = (event, newDate, position) => {\n if (!isDate(newDate)) return;\n\n if (!rangeMode) {\n handleDateChange(event, newDate);\n return;\n }\n\n if (position === \"left\") {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n } else if (position === \"right\") {\n if (!startDate) {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n return;\n }\n setEndDate(newDate < startDate ? startDate : newDate);\n }\n };\n\n /**\n * Renders the container for the action elements.\n */\n const renderActions = () => (\n <HvActionBar className={cx({ [classes.actionContainer]: showClear })}>\n {showClear && (\n <div className={classes.leftContainer}>\n <HvButton\n id={setId(id, \"action\", \"clear\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleClear}\n >\n {labels?.clearLabel}\n </HvButton>\n </div>\n )}\n <div className={classes.rightContainer}>\n <HvButton\n id={setId(id, \"action\", \"apply\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleApply}\n >\n {labels?.applyLabel}\n </HvButton>\n <HvButton\n id={setId(id, \"action\", \"cancel\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleCancel}\n >\n {labels?.cancelLabel}\n </HvButton>\n </div>\n </HvActionBar>\n );\n\n const styledTypography = (dateString, variant, text) => {\n const StyledTypography = styled(HvTypography)({\n color: dateString\n ? theme.colors.secondary\n : theme.datePicker.dropdownPlaceholderColor,\n });\n\n return <StyledTypography variant={variant}>{text}</StyledTypography>;\n };\n\n const renderInput = (dateString) =>\n styledTypography(\n dateString,\n activeTheme?.datePicker.placeholderVariant,\n (dateString || placeholder) === undefined ? \"\" : dateString || placeholder\n );\n\n const dateValue = rangeMode ? { startDate, endDate } : startDate;\n\n const hasLabel = label != null;\n const hasDescription = description != null;\n\n // the error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and required is true\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined && required));\n\n const isStateInvalid = isInvalid(validationState);\n\n let errorMessageId;\n if (isStateInvalid) {\n errorMessageId = canShowError\n ? setId(elementId, \"error\")\n : ariaErrorMessage;\n }\n\n return (\n <HvFormElement\n id={id}\n name={name}\n value={dateValue}\n status={validationState}\n disabled={disabled}\n required={required}\n className={cx(className, classes.root)}\n readOnly={readOnly}\n {...others}\n >\n {(hasLabel || hasDescription) && (\n <div className={classes.labelContainer}>\n {hasLabel && (\n <HvLabel\n id={setId(elementId, \"label\")}\n label={label}\n className={classes.label}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage\n id={setId(elementId, \"description\")}\n className={classes.description}\n >\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n <HvBaseDropdown\n role=\"combobox\"\n classes={{\n root: classes.dropdown,\n panel: classes.panel,\n header: cx({ [classes.dropdownHeaderInvalid]: isStateInvalid }),\n headerOpen: classes.dropdownHeaderOpen,\n }}\n readOnly={readOnly}\n disabled={disabled}\n disablePortal={disablePortal}\n variableWidth\n placement={horizontalPlacement}\n expanded={calendarOpen}\n onToggle={handleToggle}\n onClickOutside={handleCalendarClose}\n onContainerCreation={focusOnContainer}\n placeholder={renderInput(getDateLabel(dateValue, rangeMode, locale))}\n adornment={\n <Calendar\n className={classes.icon}\n color={disabled ? \"secondary_80\" : undefined}\n />\n }\n popperProps={{\n modifiers: [\n { name: \"preventOverflow\", enabled: escapeWithReference },\n ],\n }}\n aria-haspopup=\"dialog\"\n aria-label={ariaLabel}\n aria-labelledby={\n [label && setId(elementId, \"label\"), ariaLabelledBy]\n .join(\" \")\n .trim() || undefined\n }\n aria-invalid={isStateInvalid ? true : undefined}\n aria-errormessage={errorMessageId}\n aria-describedby={\n [description && setId(elementId, \"description\"), ariaDescribedBy]\n .join(\" \")\n .trim() || undefined\n }\n {...dropdownProps}\n >\n <div ref={focusTarget} tabIndex={-1} />\n <HvCalendar\n id={setId(id, \"calendar\")}\n startAdornment={startAdornment}\n onChange={handleDateChange}\n onInputChange={handleInputDateChange}\n onVisibleDateChange={(_event, type, month, target) => {\n dispatchAction({ type, target, month });\n }}\n locale={locale}\n {...visibleDate}\n {...calendarProps}\n invalidDateLabel={labels?.invalidDateLabel}\n />\n {(rangeMode || showActions) && renderActions()}\n </HvBaseDropdown>\n {canShowError && (\n <HvWarningText\n id={setId(elementId, \"error\")}\n disableBorder\n className={cx(classes.error)}\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n );\n};\n"],"names":["DEFAULT_LABELS","applyLabel","cancelLabel","clearLabel","invalidLabel","HvDatePicker","classes","classesProp","className","id","name","required","disabled","readOnly","label","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","onChange","onCancel","onClear","status","statusMessage","ariaErrorMessage","placeholder","labels","labelsProp","value","startValue","endValue","rangeMode","startAdornment","horizontalPlacement","locale","localeProp","showActions","showClear","disablePortal","escapeWithReference","dropdownProps","calendarProps","others","cx","useClasses","useLabels","elementId","useUniqueId","validationState","setValidationState","useControlled","validationMessage","calendarOpen","setCalendarOpen","useState","startDate","setStartDate","rollbackStartDate","useSavedState","endDate","setEndDate","rollbackEndDate","visibleDate","dispatchAction","useVisibleDate","focusTarget","useRef","activeTheme","useTheme","useEffect","endDateIsSet","current","type","target","year","getFullYear","month","getMonth","handleApply","isDate","handleCancel","handleClear","undefined","handleCalendarClose","shouldSave","handleToggle","evt","open","focusOnContainer","focus","handleDateChange","event","newDate","autoSave","handleInputDateChange","position","renderActions","_jsxs","HvActionBar","actionContainer","children","_jsx","leftContainer","HvButton","setId","action","variant","onClick","rightContainer","styledTypography","dateString","text","StyledTypography","HvTypography","process","env","NODE_ENV","color","theme","colors","secondary","datePicker","dropdownPlaceholderColor","renderInput","placeholderVariant","dateValue","hasLabel","hasDescription","canShowError","isStateInvalid","isInvalid","errorMessageId","HvFormElement","root","labelContainer","HvLabel","HvInfoMessage","HvBaseDropdown","role","dropdown","panel","header","dropdownHeaderInvalid","headerOpen","dropdownHeaderOpen","variableWidth","placement","expanded","onToggle","onClickOutside","onContainerCreation","getDateLabel","adornment","Calendar","icon","popperProps","modifiers","enabled","join","trim","ref","tabIndex","HvCalendar","onInputChange","onVisibleDateChange","_event","invalidDateLabel","HvWarningText","disableBorder","error"],"mappings":"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"}
|
|
@@ -46,7 +46,7 @@ const HvDialog = ({
|
|
|
46
46
|
if (bypassValidation || !disableBackdropClick) {
|
|
47
47
|
onClose == null ? void 0 : onClose(event, reason);
|
|
48
48
|
}
|
|
49
|
-
}, [onClose]);
|
|
49
|
+
}, [onClose, disableBackdropClick]);
|
|
50
50
|
const measuredRef = useCallback(() => {
|
|
51
51
|
if (!firstFocusable)
|
|
52
52
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.js","sources":["../../../../src/components/Dialog/Dialog.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport MuiDialog, { DialogProps as MuiDialogProps } from \"@mui/material/Dialog\";\nimport { BackdropProps } from \"@mui/material\";\n\nimport { Close } from \"@hitachivantara/uikit-react-icons\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { ExtractNames, setId } from \"@core/utils\";\nimport { withTooltip } from \"@core/hocs\";\nimport { useTheme } from \"@core/hooks\";\nimport { StyledBackdrop, staticClasses, useClasses } from \"./Dialog.styles\";\nimport { HvButton } from \"..\";\n\nexport { staticClasses as dialogClasses };\n\nexport type HvDialogClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvDialogProps\n extends Omit<MuiDialogProps, \"fullScreen\" | \"classes\" | \"open\">,\n HvBaseProps {\n /** Id to be applied to the root node. */\n id?: string;\n /** Current state of the Dialog. */\n open?: boolean;\n /** Function executed on close. */\n onClose?: (\n event: React.SyntheticEvent,\n reason?: \"escapeKeyDown\" | \"backdropClick\"\n ) => void;\n /** @inheritdoc */\n maxWidth?: MuiDialogProps[\"maxWidth\"];\n /** @inheritdoc */\n fullWidth?: MuiDialogProps[\"fullWidth\"];\n /**\n * Element id that should be focus when the Dialog opens.\n * Auto-focusing elements can cause usability issues, so this should be avoided.\n * @deprecated Use `autoFocus` on the element instead, if auto-focusing is required.\n */\n firstFocusable?: string;\n /** Title for the button close. */\n buttonTitle?: string;\n /** Set the dialog to fullscreen mode. */\n fullscreen?: boolean;\n /** Prevent closing the dialog when clicking on the backdrop. */\n disableBackdropClick?: boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvDialogClasses;\n}\n\nconst DialogBackdrop = (backdropProps: BackdropProps) => {\n const { activeTheme, selectedMode } = useTheme();\n return (\n <StyledBackdrop\n $backColor={\n activeTheme?.colors?.modes[selectedMode].atmo4 || theme.colors.atmo4\n }\n {...backdropProps}\n />\n );\n};\n\nexport const HvDialog = ({\n classes: classesProp,\n className,\n id,\n children,\n open = false,\n onClose,\n firstFocusable,\n buttonTitle = \"Close\",\n fullscreen = false,\n disableBackdropClick = false,\n ...others\n}: HvDialogProps) => {\n const { classes, css, cx } = useClasses(classesProp);\n delete (others as any).fullScreen;\n\n const { rootId } = useTheme();\n\n // Because the `disableBackdropClick` property was deprecated in MUI5\n // and we want to maintain that functionality to the user we're wrapping\n // the onClose call here to make that check.\n const wrappedClose = useCallback(\n (\n event,\n bypassValidation: boolean = false,\n reason?: \"escapeKeyDown\" | \"backdropClick\"\n ) => {\n if (bypassValidation || !disableBackdropClick) {\n onClose?.(event, reason);\n }\n },\n [onClose]\n );\n\n const measuredRef = useCallback(() => {\n if (!firstFocusable) return;\n\n const element = document.getElementById(firstFocusable);\n element?.focus();\n }, [firstFocusable]);\n\n const closeButtonDisplay = () => <Close role=\"presentation\" />;\n\n const CloseButtonTooltipWrapper = buttonTitle\n ? withTooltip(closeButtonDisplay, buttonTitle, \"top\")\n : closeButtonDisplay;\n\n const slots = useMemo<MuiDialogProps[\"slots\"]>(\n () => ({\n backdrop: (backdropProps) => (\n <DialogBackdrop open={open} onClick={wrappedClose} {...backdropProps} />\n ),\n }),\n [open, wrappedClose]\n );\n\n return (\n <MuiDialog\n container={document.getElementById(rootId || \"\") || document.body}\n className={cx(className, classes.root)}\n id={id}\n ref={measuredRef}\n open={open}\n fullScreen={fullscreen}\n onClose={(event, reason) => wrappedClose(event, undefined, reason)}\n slots={slots}\n classes={{ container: css({ position: \"relative\" }) }}\n BackdropProps={{\n classes: {\n root: classes.background,\n },\n }}\n PaperProps={{\n classes: {\n root: cx(css({ position: \"absolute\" }), classes.paper, {\n fullscreen,\n [classes.fullscreen]: fullscreen,\n }),\n },\n }}\n aria-modal\n {...others}\n >\n <HvButton\n id={setId(id, \"close\")}\n className={classes.closeButton}\n variant=\"secondaryGhost\"\n onClick={(event) => wrappedClose(event, true, undefined)}\n aria-label={buttonTitle}\n >\n <CloseButtonTooltipWrapper />\n </HvButton>\n {children && typeof children === \"object\"\n ? React.Children.map(\n children,\n (c: React.ReactNode) =>\n c && React.cloneElement(c as React.ReactElement, { fullscreen })\n )\n : children}\n </MuiDialog>\n );\n};\n"],"names":["DialogBackdrop","backdropProps","activeTheme","selectedMode","useTheme","StyledBackdrop","$backColor","colors","modes","atmo4","theme","HvDialog","classes","classesProp","className","id","children","open","onClose","firstFocusable","buttonTitle","fullscreen","disableBackdropClick","others","css","cx","useClasses","fullScreen","rootId","wrappedClose","useCallback","event","bypassValidation","reason","measuredRef","element","document","getElementById","focus","closeButtonDisplay","_jsx","Close","role","CloseButtonTooltipWrapper","withTooltip","slots","useMemo","backdrop","onClick","MuiDialog","container","body","root","ref","undefined","position","BackdropProps","background","PaperProps","paper","HvButton","setId","closeButton","variant","React","Children","map","c","cloneElement"],"mappings":";;;;;;;;;;;AAiDA,MAAMA,iBAAiBA,CAACC,kBAAiC;;AACjD,QAAA;AAAA,IAAEC;AAAAA,IAAaC;AAAAA,MAAiBC,SAAS;AAC/C,6BACGC,gBAAc;AAAA,IACbC,cACEJ,gDAAaK,WAAbL,mBAAqBM,MAAML,cAAcM,UAASC,MAAMH,OAAOE;AAAAA,IAChE,GACGR;AAAAA,EAAAA,CACL;AAEL;AAEO,MAAMU,WAAWA,CAAC;AAAA,EACvBC,SAASC;AAAAA,EACTC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,OAAO;AAAA,EACPC;AAAAA,EACAC;AAAAA,EACAC,cAAc;AAAA,EACdC,aAAa;AAAA,EACbC,uBAAuB;AAAA,EACvB,GAAGC;AACU,MAAM;AACb,QAAA;AAAA,IAAEX;AAAAA,IAASY;AAAAA,IAAKC;AAAAA,EAAAA,IAAOC,WAAWb,WAAW;AACnD,SAAQU,OAAeI;AAEjB,QAAA;AAAA,IAAEC;AAAAA,MAAWxB,SAAS;AAK5B,QAAMyB,eAAeC,YACnB,CACEC,OACAC,mBAA4B,OAC5BC,WACG;AACCD,QAAAA,oBAAoB,CAACV,sBAAsB;AAC7CJ,yCAAUa,OAAOE;AAAAA,IACnB;AAAA,EAAA,GAEF,CAACf,
|
|
1
|
+
{"version":3,"file":"Dialog.js","sources":["../../../../src/components/Dialog/Dialog.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport MuiDialog, { DialogProps as MuiDialogProps } from \"@mui/material/Dialog\";\nimport { BackdropProps } from \"@mui/material\";\n\nimport { Close } from \"@hitachivantara/uikit-react-icons\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { ExtractNames, setId } from \"@core/utils\";\nimport { withTooltip } from \"@core/hocs\";\nimport { useTheme } from \"@core/hooks\";\nimport { StyledBackdrop, staticClasses, useClasses } from \"./Dialog.styles\";\nimport { HvButton } from \"..\";\n\nexport { staticClasses as dialogClasses };\n\nexport type HvDialogClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvDialogProps\n extends Omit<MuiDialogProps, \"fullScreen\" | \"classes\" | \"open\">,\n HvBaseProps {\n /** Id to be applied to the root node. */\n id?: string;\n /** Current state of the Dialog. */\n open?: boolean;\n /** Function executed on close. */\n onClose?: (\n event: React.SyntheticEvent,\n reason?: \"escapeKeyDown\" | \"backdropClick\"\n ) => void;\n /** @inheritdoc */\n maxWidth?: MuiDialogProps[\"maxWidth\"];\n /** @inheritdoc */\n fullWidth?: MuiDialogProps[\"fullWidth\"];\n /**\n * Element id that should be focus when the Dialog opens.\n * Auto-focusing elements can cause usability issues, so this should be avoided.\n * @deprecated Use `autoFocus` on the element instead, if auto-focusing is required.\n */\n firstFocusable?: string;\n /** Title for the button close. */\n buttonTitle?: string;\n /** Set the dialog to fullscreen mode. */\n fullscreen?: boolean;\n /** Prevent closing the dialog when clicking on the backdrop. */\n disableBackdropClick?: boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvDialogClasses;\n}\n\nconst DialogBackdrop = (backdropProps: BackdropProps) => {\n const { activeTheme, selectedMode } = useTheme();\n return (\n <StyledBackdrop\n $backColor={\n activeTheme?.colors?.modes[selectedMode].atmo4 || theme.colors.atmo4\n }\n {...backdropProps}\n />\n );\n};\n\nexport const HvDialog = ({\n classes: classesProp,\n className,\n id,\n children,\n open = false,\n onClose,\n firstFocusable,\n buttonTitle = \"Close\",\n fullscreen = false,\n disableBackdropClick = false,\n ...others\n}: HvDialogProps) => {\n const { classes, css, cx } = useClasses(classesProp);\n delete (others as any).fullScreen;\n\n const { rootId } = useTheme();\n\n // Because the `disableBackdropClick` property was deprecated in MUI5\n // and we want to maintain that functionality to the user we're wrapping\n // the onClose call here to make that check.\n const wrappedClose = useCallback(\n (\n event,\n bypassValidation: boolean = false,\n reason?: \"escapeKeyDown\" | \"backdropClick\"\n ) => {\n if (bypassValidation || !disableBackdropClick) {\n onClose?.(event, reason);\n }\n },\n [onClose, disableBackdropClick]\n );\n\n const measuredRef = useCallback(() => {\n if (!firstFocusable) return;\n\n const element = document.getElementById(firstFocusable);\n element?.focus();\n }, [firstFocusable]);\n\n const closeButtonDisplay = () => <Close role=\"presentation\" />;\n\n const CloseButtonTooltipWrapper = buttonTitle\n ? withTooltip(closeButtonDisplay, buttonTitle, \"top\")\n : closeButtonDisplay;\n\n const slots = useMemo<MuiDialogProps[\"slots\"]>(\n () => ({\n backdrop: (backdropProps) => (\n <DialogBackdrop open={open} onClick={wrappedClose} {...backdropProps} />\n ),\n }),\n [open, wrappedClose]\n );\n\n return (\n <MuiDialog\n container={document.getElementById(rootId || \"\") || document.body}\n className={cx(className, classes.root)}\n id={id}\n ref={measuredRef}\n open={open}\n fullScreen={fullscreen}\n onClose={(event, reason) => wrappedClose(event, undefined, reason)}\n slots={slots}\n classes={{ container: css({ position: \"relative\" }) }}\n BackdropProps={{\n classes: {\n root: classes.background,\n },\n }}\n PaperProps={{\n classes: {\n root: cx(css({ position: \"absolute\" }), classes.paper, {\n fullscreen,\n [classes.fullscreen]: fullscreen,\n }),\n },\n }}\n aria-modal\n {...others}\n >\n <HvButton\n id={setId(id, \"close\")}\n className={classes.closeButton}\n variant=\"secondaryGhost\"\n onClick={(event) => wrappedClose(event, true, undefined)}\n aria-label={buttonTitle}\n >\n <CloseButtonTooltipWrapper />\n </HvButton>\n {children && typeof children === \"object\"\n ? React.Children.map(\n children,\n (c: React.ReactNode) =>\n c && React.cloneElement(c as React.ReactElement, { fullscreen })\n )\n : children}\n </MuiDialog>\n );\n};\n"],"names":["DialogBackdrop","backdropProps","activeTheme","selectedMode","useTheme","StyledBackdrop","$backColor","colors","modes","atmo4","theme","HvDialog","classes","classesProp","className","id","children","open","onClose","firstFocusable","buttonTitle","fullscreen","disableBackdropClick","others","css","cx","useClasses","fullScreen","rootId","wrappedClose","useCallback","event","bypassValidation","reason","measuredRef","element","document","getElementById","focus","closeButtonDisplay","_jsx","Close","role","CloseButtonTooltipWrapper","withTooltip","slots","useMemo","backdrop","onClick","MuiDialog","container","body","root","ref","undefined","position","BackdropProps","background","PaperProps","paper","HvButton","setId","closeButton","variant","React","Children","map","c","cloneElement"],"mappings":";;;;;;;;;;;AAiDA,MAAMA,iBAAiBA,CAACC,kBAAiC;;AACjD,QAAA;AAAA,IAAEC;AAAAA,IAAaC;AAAAA,MAAiBC,SAAS;AAC/C,6BACGC,gBAAc;AAAA,IACbC,cACEJ,gDAAaK,WAAbL,mBAAqBM,MAAML,cAAcM,UAASC,MAAMH,OAAOE;AAAAA,IAChE,GACGR;AAAAA,EAAAA,CACL;AAEL;AAEO,MAAMU,WAAWA,CAAC;AAAA,EACvBC,SAASC;AAAAA,EACTC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,OAAO;AAAA,EACPC;AAAAA,EACAC;AAAAA,EACAC,cAAc;AAAA,EACdC,aAAa;AAAA,EACbC,uBAAuB;AAAA,EACvB,GAAGC;AACU,MAAM;AACb,QAAA;AAAA,IAAEX;AAAAA,IAASY;AAAAA,IAAKC;AAAAA,EAAAA,IAAOC,WAAWb,WAAW;AACnD,SAAQU,OAAeI;AAEjB,QAAA;AAAA,IAAEC;AAAAA,MAAWxB,SAAS;AAK5B,QAAMyB,eAAeC,YACnB,CACEC,OACAC,mBAA4B,OAC5BC,WACG;AACCD,QAAAA,oBAAoB,CAACV,sBAAsB;AAC7CJ,yCAAUa,OAAOE;AAAAA,IACnB;AAAA,EAAA,GAEF,CAACf,SAASI,oBAAoB,CAChC;AAEMY,QAAAA,cAAcJ,YAAY,MAAM;AACpC,QAAI,CAACX;AAAgB;AAEfgB,UAAAA,UAAUC,SAASC,eAAelB,cAAc;AACtDgB,uCAASG;AAAAA,EAAM,GACd,CAACnB,cAAc,CAAC;AAEboB,QAAAA,qBAAqBA,MAAMC,oBAACC,OAAK;AAAA,IAACC,MAAK;AAAA,EAAA,CAAgB;AAE7D,QAAMC,4BAA4BvB,cAC9BwB,YAAYL,oBAAoBnB,aAAa,KAAK,IAClDmB;AAEEM,QAAAA,QAAQC,QACZ,OAAO;AAAA,IACLC,UAAW9C,CACTuC,kBAAAA,oBAACxC,gBAAc;AAAA,MAACiB;AAAAA,MAAY+B,SAASnB;AAAAA,MAAa,GAAK5B;AAAAA,IAAAA,CAAgB;AAAA,EAG3E,IAAA,CAACgB,MAAMY,YAAY,CACrB;AAEA,8BACGoB,WAAS;AAAA,IACRC,WAAWd,SAASC,eAAeT,UAAU,EAAE,KAAKQ,SAASe;AAAAA,IAC7DrC,WAAWW,GAAGX,WAAWF,QAAQwC,IAAI;AAAA,IACrCrC;AAAAA,IACAsC,KAAKnB;AAAAA,IACLjB;AAAAA,IACAU,YAAYN;AAAAA,IACZH,SAASA,CAACa,OAAOE,WAAWJ,aAAaE,OAAOuB,QAAWrB,MAAM;AAAA,IACjEY;AAAAA,IACAjC,SAAS;AAAA,MAAEsC,WAAW1B,IAAI;AAAA,QAAE+B,UAAU;AAAA,MAAA,CAAY;AAAA,IAAE;AAAA,IACpDC,eAAe;AAAA,MACb5C,SAAS;AAAA,QACPwC,MAAMxC,QAAQ6C;AAAAA,MAChB;AAAA,IACF;AAAA,IACAC,YAAY;AAAA,MACV9C,SAAS;AAAA,QACPwC,MAAM3B,GAAGD,IAAI;AAAA,UAAE+B,UAAU;AAAA,QAAA,CAAY,GAAG3C,QAAQ+C,OAAO;AAAA,UACrDtC;AAAAA,UACA,CAACT,QAAQS,UAAU,GAAGA;AAAAA,QAAAA,CACvB;AAAA,MACH;AAAA,IACF;AAAA,IACA,cAAU;AAAA,IAAA,GACNE;AAAAA,IAAMP,UAAA,CAEVwB,oBAACoB,UAAQ;AAAA,MACP7C,IAAI8C,MAAM9C,IAAI,OAAO;AAAA,MACrBD,WAAWF,QAAQkD;AAAAA,MACnBC,SAAQ;AAAA,MACRf,SAAUjB,CAAAA,UAAUF,aAAaE,OAAO,MAAMuB,MAAS;AAAA,MACvD,cAAYlC;AAAAA,MAAYJ,UAExBwB,oBAACG,2BAA2B,EAAA;AAAA,IACpB,CAAA,GACT3B,YAAY,OAAOA,aAAa,WAC7BgD,eAAMC,SAASC,IACblD,UACA,CAACmD,MACCA,KAAKH,eAAMI,aAAaD,GAAyB;AAAA,MAAE9C;AAAAA,IAAAA,CAAY,CACnE,IACAL,QAAQ;AAAA,EAAA,CACH;AAEf;"}
|