@lumx/react 3.20.1-alpha.31 → 3.20.1-alpha.32

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.
Files changed (171) hide show
  1. package/_internal/{Button-f382ee1c.js → Button-1b7d3b79.js} +9 -8
  2. package/_internal/Button-1b7d3b79.js.map +1 -0
  3. package/_internal/ButtonRoot-a70baf82.js.map +1 -1
  4. package/_internal/{Chip-70af04b4.js → Chip-8fbedc93.js} +10 -7
  5. package/_internal/Chip-8fbedc93.js.map +1 -0
  6. package/_internal/{ClickAwayProvider-1204f237.js → ClickAwayProvider-7093ba23.js} +2 -2
  7. package/_internal/ClickAwayProvider-7093ba23.js.map +1 -0
  8. package/_internal/{IconButton-1790b47e.js → IconButton-e11b5e74.js} +3 -3
  9. package/_internal/{IconButton-1790b47e.js.map → IconButton-e11b5e74.js.map} +1 -1
  10. package/_internal/{ImageCaption-16bf224b.js → ImageCaption-6f2f4131.js} +3 -3
  11. package/_internal/{ImageCaption-16bf224b.js.map → ImageCaption-6f2f4131.js.map} +1 -1
  12. package/_internal/{List-c75646f2.js → List-4e95288a.js} +9 -7
  13. package/_internal/List-4e95288a.js.map +1 -0
  14. package/_internal/{PopoverDialog-3b63f140.js → PopoverDialog-d85ff977.js} +10 -10
  15. package/_internal/PopoverDialog-d85ff977.js.map +1 -0
  16. package/_internal/{Slides-2a427c44.js → Slides-68a7d0e6.js} +13 -6
  17. package/_internal/Slides-68a7d0e6.js.map +1 -0
  18. package/_internal/{Thumbnail-d2001ccb.js → Thumbnail-22bbea7e.js} +4 -3
  19. package/_internal/Thumbnail-22bbea7e.js.map +1 -0
  20. package/_internal/check-circle-de24f857.js +4 -0
  21. package/_internal/check-circle-de24f857.js.map +1 -0
  22. package/_internal/chevron-right-827b804a.js +6 -0
  23. package/_internal/chevron-right-827b804a.js.map +1 -0
  24. package/_internal/chevron-up-0b9c76cb.js +6 -0
  25. package/_internal/chevron-up-0b9c76cb.js.map +1 -0
  26. package/_internal/close-circle-ef5d1aac.js +4 -0
  27. package/_internal/close-circle-ef5d1aac.js.map +1 -0
  28. package/_internal/close-eaf6c45a.js +4 -0
  29. package/_internal/close-eaf6c45a.js.map +1 -0
  30. package/_internal/components/{alert-dialog-bd1b2532.js → alert-dialog-5326cf04.js} +6 -5
  31. package/_internal/components/{alert-dialog-bd1b2532.js.map → alert-dialog-5326cf04.js.map} +1 -1
  32. package/_internal/components/{autocomplete-8ae2c4f9.js → autocomplete-7d9581e8.js} +7 -7
  33. package/_internal/components/{autocomplete-8ae2c4f9.js.map → autocomplete-7d9581e8.js.map} +1 -1
  34. package/_internal/components/{avatar-778d7df6.js → avatar-52bb217f.js} +2 -2
  35. package/_internal/components/{avatar-778d7df6.js.map → avatar-52bb217f.js.map} +1 -1
  36. package/_internal/components/{button-4aff084a.js → button-c4127e86.js} +3 -3
  37. package/_internal/components/{button-4aff084a.js.map → button-c4127e86.js.map} +1 -1
  38. package/_internal/components/{checkbox-a448ca6c.js → checkbox-f7751583.js} +6 -3
  39. package/_internal/components/checkbox-f7751583.js.map +1 -0
  40. package/_internal/components/{chip-19e40755.js → chip-1ed080fb.js} +2 -2
  41. package/_internal/components/{chip-19e40755.js.map → chip-1ed080fb.js.map} +1 -1
  42. package/_internal/components/{comment-block-bcbedf3c.js → comment-block-343e1922.js} +3 -3
  43. package/_internal/components/{comment-block-bcbedf3c.js.map → comment-block-343e1922.js.map} +1 -1
  44. package/_internal/components/date-picker-b6b3dc77.js +2 -0
  45. package/_internal/components/date-picker-b6b3dc77.js.map +1 -0
  46. package/_internal/components/{dialog-30336ccb.js → dialog-d0e090b1.js} +6 -6
  47. package/_internal/components/dialog-d0e090b1.js.map +1 -0
  48. package/_internal/components/{drag-handle-137f71b6.js → drag-handle-eec23fc2.js} +4 -3
  49. package/_internal/components/drag-handle-eec23fc2.js.map +1 -0
  50. package/_internal/components/{dropdown-d18122d7.js → dropdown-25170b7c.js} +4 -4
  51. package/_internal/components/{dropdown-d18122d7.js.map → dropdown-25170b7c.js.map} +1 -1
  52. package/_internal/components/{expansion-panel-38ed3d9f.js → expansion-panel-df812318.js} +9 -9
  53. package/_internal/components/expansion-panel-df812318.js.map +1 -0
  54. package/_internal/components/{flag-c2e41e8d.js → flag-c8d690bc.js} +3 -3
  55. package/_internal/components/{flag-c2e41e8d.js.map → flag-c8d690bc.js.map} +1 -1
  56. package/_internal/components/{flex-box-15be92f6.js → flex-box-4eeba972.js} +2 -2
  57. package/_internal/components/flex-box-4eeba972.js.map +1 -0
  58. package/_internal/components/{generic-block-5d843f1e.js → generic-block-964b2724.js} +11 -14
  59. package/_internal/components/generic-block-964b2724.js.map +1 -0
  60. package/_internal/components/{grid-column-85e305e7.js → grid-column-99652545.js} +3 -2
  61. package/_internal/components/grid-column-99652545.js.map +1 -0
  62. package/_internal/components/{heading-28520e1c.js → heading-6cc0f178.js} +2 -2
  63. package/_internal/components/{heading-28520e1c.js.map → heading-6cc0f178.js.map} +1 -1
  64. package/_internal/components/icon-9cf785b1.js +2 -0
  65. package/_internal/components/icon-9cf785b1.js.map +1 -0
  66. package/_internal/components/{image-block-10976174.js → image-block-4f3fe64c.js} +3 -3
  67. package/_internal/components/{image-block-10976174.js.map → image-block-4f3fe64c.js.map} +1 -1
  68. package/_internal/components/{image-lightbox-86f1e1fb.js → image-lightbox-7b172571.js} +12 -9
  69. package/_internal/components/image-lightbox-7b172571.js.map +1 -0
  70. package/_internal/components/{lightbox-c618a33b.js → lightbox-10ff28f9.js} +6 -6
  71. package/_internal/components/{lightbox-c618a33b.js.map → lightbox-10ff28f9.js.map} +1 -1
  72. package/_internal/components/{link-9c3feb34.js → link-9d1bd2f6.js} +3 -3
  73. package/_internal/components/{link-9c3feb34.js.map → link-9d1bd2f6.js.map} +1 -1
  74. package/_internal/components/{link-preview-79500604.js → link-preview-9525e97f.js} +3 -3
  75. package/_internal/components/{link-preview-79500604.js.map → link-preview-9525e97f.js.map} +1 -1
  76. package/_internal/components/{list-2f256244.js → list-c8c7a6eb.js} +2 -2
  77. package/_internal/components/{list-2f256244.js.map → list-c8c7a6eb.js.map} +1 -1
  78. package/_internal/components/{message-a3806f51.js → message-edd6a28a.js} +6 -4
  79. package/_internal/components/{message-a3806f51.js.map → message-edd6a28a.js.map} +1 -1
  80. package/_internal/components/{mosaic-e6581097.js → mosaic-c8084ee8.js} +4 -3
  81. package/_internal/components/mosaic-c8084ee8.js.map +1 -0
  82. package/_internal/components/{navigation-5378f128.js → navigation-c9121998.js} +6 -6
  83. package/_internal/components/{navigation-5378f128.js.map → navigation-c9121998.js.map} +1 -1
  84. package/_internal/components/{notification-49837625.js → notification-97a8a04a.js} +9 -5
  85. package/_internal/components/notification-97a8a04a.js.map +1 -0
  86. package/_internal/components/popover-f93484cd.js +3 -0
  87. package/_internal/components/popover-f93484cd.js.map +1 -0
  88. package/_internal/components/{post-block-478bc3b8.js → post-block-7e63c4f4.js} +12 -12
  89. package/_internal/components/post-block-7e63c4f4.js.map +1 -0
  90. package/_internal/components/{progress-tracker-0fd35bea.js → progress-tracker-c9758d83.js} +7 -3
  91. package/_internal/components/progress-tracker-c9758d83.js.map +1 -0
  92. package/_internal/components/{select-a145edbb.js → select-bea40e77.js} +15 -10
  93. package/_internal/components/select-bea40e77.js.map +1 -0
  94. package/_internal/components/{side-navigation-b99d6022.js → side-navigation-385825d4.js} +7 -6
  95. package/_internal/components/side-navigation-385825d4.js.map +1 -0
  96. package/_internal/components/{slideshow-b78ac3d6.js → slideshow-e0880d40.js} +3 -3
  97. package/_internal/components/{slideshow-b78ac3d6.js.map → slideshow-e0880d40.js.map} +1 -1
  98. package/_internal/components/{switch-25b65051.js → switch-24fea8d7.js} +3 -2
  99. package/_internal/components/switch-24fea8d7.js.map +1 -0
  100. package/_internal/components/{table-3cbee034.js → table-834af792.js} +6 -3
  101. package/_internal/components/table-834af792.js.map +1 -0
  102. package/_internal/components/{tabs-5d8ea1a5.js → tabs-bebfe959.js} +3 -3
  103. package/_internal/components/{tabs-5d8ea1a5.js.map → tabs-bebfe959.js.map} +1 -1
  104. package/_internal/components/text-9074f440.js +2 -0
  105. package/_internal/components/text-9074f440.js.map +1 -0
  106. package/_internal/components/{text-field-c26582c5.js → text-field-8597b7f7.js} +7 -5
  107. package/_internal/components/text-field-8597b7f7.js.map +1 -0
  108. package/_internal/components/{thumbnail-cb55b26c.js → thumbnail-4928bba2.js} +2 -2
  109. package/_internal/components/{thumbnail-cb55b26c.js.map → thumbnail-4928bba2.js.map} +1 -1
  110. package/_internal/components/{tooltip-dcb43bbe.js → tooltip-21018736.js} +2 -2
  111. package/_internal/components/{tooltip-dcb43bbe.js.map → tooltip-21018736.js.map} +1 -1
  112. package/_internal/components/{uploader-873b9bc1.js → uploader-2e1b080e.js} +2 -2
  113. package/_internal/components/{uploader-873b9bc1.js.map → uploader-2e1b080e.js.map} +1 -1
  114. package/_internal/components/{user-block-7cbaffe0.js → user-block-5fd51607.js} +12 -11
  115. package/_internal/components/user-block-5fd51607.js.map +1 -0
  116. package/_internal/{index-151e2652.js → index-77f213b1.js} +2 -2
  117. package/_internal/{index-151e2652.js.map → index-77f213b1.js.map} +1 -1
  118. package/_internal/{index-25d2a45e.js → index-aa6d1d90.js} +4 -4
  119. package/_internal/{index-25d2a45e.js.map → index-aa6d1d90.js.map} +1 -1
  120. package/_internal/{components/icon-a00d698b.js → index-d3e86bd8.js} +6 -5
  121. package/_internal/index-d3e86bd8.js.map +1 -0
  122. package/_internal/information-49bbeed3.js +6 -0
  123. package/_internal/information-49bbeed3.js.map +1 -0
  124. package/_internal/{isComponent-b9762ff1.js → isComponent-78df9309.js} +5 -3
  125. package/_internal/isComponent-78df9309.js.map +1 -0
  126. package/_internal/partitionMulti-4daccdd5.js +25 -0
  127. package/_internal/partitionMulti-4daccdd5.js.map +1 -0
  128. package/_internal/{useCallbackOnEscape-b956a85d.js → useCallbackOnEscape-ea4d9eb4.js} +4 -6
  129. package/_internal/useCallbackOnEscape-ea4d9eb4.js.map +1 -0
  130. package/_internal/{useFocusTrap-2dbae79e.js → useFocusTrap-c3c6378b.js} +2 -2
  131. package/_internal/{useFocusTrap-2dbae79e.js.map → useFocusTrap-c3c6378b.js.map} +1 -1
  132. package/_internal/{wrapChildrenIconWithSpaces-ef2a6772.js → wrapChildrenIconWithSpaces-fb85a743.js} +2 -2
  133. package/_internal/{wrapChildrenIconWithSpaces-ef2a6772.js.map → wrapChildrenIconWithSpaces-fb85a743.js.map} +1 -1
  134. package/index.d.ts +15 -4
  135. package/index.js +49 -49
  136. package/package.json +3 -3
  137. package/utils/index.js +1 -1
  138. package/_internal/Button-f382ee1c.js.map +0 -1
  139. package/_internal/Chip-70af04b4.js.map +0 -1
  140. package/_internal/ClickAwayProvider-1204f237.js.map +0 -1
  141. package/_internal/List-c75646f2.js.map +0 -1
  142. package/_internal/PopoverDialog-3b63f140.js.map +0 -1
  143. package/_internal/Slides-2a427c44.js.map +0 -1
  144. package/_internal/Thumbnail-d2001ccb.js.map +0 -1
  145. package/_internal/components/checkbox-a448ca6c.js.map +0 -1
  146. package/_internal/components/date-picker-b6d4048e.js +0 -2
  147. package/_internal/components/date-picker-b6d4048e.js.map +0 -1
  148. package/_internal/components/dialog-30336ccb.js.map +0 -1
  149. package/_internal/components/drag-handle-137f71b6.js.map +0 -1
  150. package/_internal/components/expansion-panel-38ed3d9f.js.map +0 -1
  151. package/_internal/components/flex-box-15be92f6.js.map +0 -1
  152. package/_internal/components/generic-block-5d843f1e.js.map +0 -1
  153. package/_internal/components/grid-column-85e305e7.js.map +0 -1
  154. package/_internal/components/icon-a00d698b.js.map +0 -1
  155. package/_internal/components/image-lightbox-86f1e1fb.js.map +0 -1
  156. package/_internal/components/mosaic-e6581097.js.map +0 -1
  157. package/_internal/components/notification-49837625.js.map +0 -1
  158. package/_internal/components/popover-dfcddda4.js +0 -3
  159. package/_internal/components/popover-dfcddda4.js.map +0 -1
  160. package/_internal/components/post-block-478bc3b8.js.map +0 -1
  161. package/_internal/components/progress-tracker-0fd35bea.js.map +0 -1
  162. package/_internal/components/select-a145edbb.js.map +0 -1
  163. package/_internal/components/side-navigation-b99d6022.js.map +0 -1
  164. package/_internal/components/switch-25b65051.js.map +0 -1
  165. package/_internal/components/table-3cbee034.js.map +0 -1
  166. package/_internal/components/text-f84a5417.js +0 -2
  167. package/_internal/components/text-f84a5417.js.map +0 -1
  168. package/_internal/components/text-field-c26582c5.js.map +0 -1
  169. package/_internal/components/user-block-7cbaffe0.js.map +0 -1
  170. package/_internal/isComponent-b9762ff1.js.map +0 -1
  171. package/_internal/useCallbackOnEscape-b956a85d.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog-30336ccb.js","sources":["../../../src/hooks/useIntersectionObserver.tsx","../../../src/components/dialog/Dialog.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport type Intersections<T> = Map<T, IntersectionObserverEntry>;\n\n/**\n * Convenient hook to create interaction observers.\n *\n * @param elements Elements to observe.\n * @param options IntersectionObserver options.\n * @return Map of intersections.\n */\nexport function useIntersectionObserver<T extends Element>(\n elements: Array<T | null | undefined>,\n options?: IntersectionObserverInit,\n): Intersections<T> {\n const [intersections, setIntersections] = useState<Intersections<T>>(() => new Map());\n\n useEffect(\n () => {\n if (elements.length < 1 || !elements.some(Boolean)) {\n return undefined;\n }\n\n const observer = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n intersections.set(entry.target as T, entry);\n }\n setIntersections(new Map(intersections));\n }, options);\n\n for (const element of elements) {\n if (element) {\n observer.observe(element);\n }\n }\n return () => observer.disconnect();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...elements],\n );\n\n return intersections;\n}\n","import React, { Children, ReactElement, ReactNode, Ref, RefObject, useMemo, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { HeadingLevelProvider, Progress, ProgressVariant, Size } from '@lumx/react';\n\nimport { DIALOG_TRANSITION_DURATION, DOCUMENT } from '@lumx/react/constants';\nimport { useCallbackOnEscape } from '@lumx/react/hooks/useCallbackOnEscape';\nimport { useFocusTrap } from '@lumx/react/hooks/useFocusTrap';\nimport { useIntersectionObserver } from '@lumx/react/hooks/useIntersectionObserver';\n\nimport { GenericProps, isComponent } from '@lumx/react/utils/type';\nimport { partitionMulti } from '@lumx/core/js/utils/collection/partitionMulti';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { ClickAwayProvider } from '@lumx/react/utils/ClickAwayProvider';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useDisableBodyScroll } from '@lumx/react/hooks/useDisableBodyScroll';\nimport { useTransitionVisibility } from '@lumx/react/hooks/useTransitionVisibility';\nimport { ThemeProvider } from '@lumx/react/utils/theme/ThemeContext';\n\nimport { Portal } from '@lumx/react/utils';\n\n/**\n * Defines the props of the component.\n */\nexport interface DialogProps extends GenericProps {\n /** Footer content. */\n footer?: ReactNode;\n /** Whether the divider between the dialog content and the footer is always displayed (instead of showing it on scroll). */\n forceFooterDivider?: boolean;\n /** Header content. */\n header?: ReactNode;\n /** Whether the divider between the dialog content and the footer is always displayed (instead of showing it on scroll). */\n forceHeaderDivider?: boolean;\n /** Whether the indefinite progress indicator over the dialog content is displayed or not. */\n isLoading?: boolean;\n /** Whether the component is open or not. */\n isOpen?: boolean;\n /** Reference to the parent element that triggered modal opening (will get back focus on close). */\n parentElement?: RefObject<HTMLElement>;\n /** Reference to the dialog content element. */\n contentRef?: Ref<HTMLDivElement>;\n /** Reference to the of the element that should get the focus when the dialogs opens. By default, the first child will take focus. */\n focusElement?: RefObject<HTMLElement>;\n /** Whether to keep the dialog open on clickaway or escape press. */\n preventAutoClose?: boolean;\n /** Whether to keep the dialog open on escape press. */\n preventCloseOnEscape?: boolean;\n /** Whether to keep the dialog open on clickaway. */\n preventCloseOnClick?: boolean;\n /** Size variant. */\n size?: DialogSizes;\n /** Z-axis position. */\n zIndex?: number;\n /** Z-axis position. */\n dialogProps?: GenericProps;\n /** On close callback. */\n onClose?(): void;\n /** Callback called when the open animation starts and the close animation finishes. */\n onVisibilityChange?(isVisible: boolean): void;\n /** whether to disable the scroll on the body or not */\n disableBodyScroll?: boolean;\n /** Children */\n children?: React.ReactNode;\n}\n\nexport type DialogSizes = Extract<Size, 'tiny' | 'regular' | 'big' | 'huge'>;\n\nconst isHeader = isComponent('header');\nconst isFooter = isComponent('footer');\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Dialog';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<DialogProps> = {\n size: Size.big,\n disableBodyScroll: true,\n};\n\n/**\n * Dialog component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Dialog = forwardRef<DialogProps, HTMLDivElement>((props, ref) => {\n if (!DOCUMENT) {\n // Can't render in SSR.\n return null;\n }\n\n const {\n children,\n className,\n header,\n focusElement,\n forceFooterDivider,\n forceHeaderDivider,\n footer,\n isLoading,\n isOpen,\n onClose,\n parentElement,\n contentRef,\n preventAutoClose,\n size = DEFAULT_PROPS.size,\n zIndex,\n dialogProps,\n onVisibilityChange,\n disableBodyScroll = DEFAULT_PROPS.disableBodyScroll,\n preventCloseOnClick,\n preventCloseOnEscape,\n ...forwardedProps\n } = props;\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const previousOpen = React.useRef(isOpen);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (isOpen !== previousOpen.current) {\n previousOpen.current = isOpen;\n\n // Focus the parent element on close.\n if (!isOpen && parentElement && parentElement.current) {\n parentElement.current.focus();\n }\n }\n }, [isOpen, parentElement]);\n\n const shouldPreventCloseOnEscape = preventAutoClose || preventCloseOnEscape;\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useCallbackOnEscape(onClose, isOpen && !shouldPreventCloseOnEscape);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const wrapperRef = useRef<HTMLDivElement>(null);\n /**\n * Since the `contentRef` comes from the parent and is optional,\n * we need to create a stable contentRef that will always be available.\n */\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const localContentRef = useRef<HTMLDivElement>(null);\n // Handle focus trap.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useFocusTrap(isOpen && wrapperRef.current, focusElement?.current);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useDisableBodyScroll(disableBodyScroll && isOpen && localContentRef.current);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [sentinelTop, setSentinelTop] = useState<Element | null>(null);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [sentinelBottom, setSentinelBottom] = useState<Element | null>(null);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const intersections = useIntersectionObserver([sentinelTop, sentinelBottom], {\n threshold: [0, 1],\n });\n\n const hasTopIntersection = sentinelTop && !(intersections.get(sentinelTop)?.isIntersecting ?? true);\n const hasBottomIntersection = sentinelBottom && !(intersections.get(sentinelBottom)?.isIntersecting ?? true);\n\n // Separate header, footer and dialog content from children.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [[headerChild], [footerChild], content] = useMemo(\n () => partitionMulti(Children.toArray(children), [isHeader, isFooter]),\n [children],\n );\n const headerChildProps = (headerChild as ReactElement)?.props;\n const headerChildContent = headerChildProps?.children;\n const footerChildProps = (footerChild as ReactElement)?.props;\n const footerChildContent = footerChildProps?.children;\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const clickAwayRefs = useRef([wrapperRef]);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const rootRef = useRef<HTMLDivElement>(null);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const isVisible = useTransitionVisibility(rootRef, Boolean(isOpen), DIALOG_TRANSITION_DURATION, onVisibilityChange);\n\n const shouldPreventCloseOnClickAway = preventAutoClose || preventCloseOnClick;\n\n return isOpen || isVisible ? (\n <Portal>\n <div\n ref={mergeRefs(rootRef, ref)}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n isHidden: !isOpen,\n isLoading,\n isShown: isOpen || isVisible,\n prefix: CLASSNAME,\n size,\n }),\n )}\n style={{ zIndex }}\n >\n <div className={`${CLASSNAME}__overlay`} />\n\n <HeadingLevelProvider level={2}>\n <ThemeProvider value={undefined}>\n <div className={`${CLASSNAME}__container`} role=\"dialog\" aria-modal=\"true\" {...dialogProps}>\n <ClickAwayProvider\n callback={!shouldPreventCloseOnClickAway && onClose}\n childrenRefs={clickAwayRefs}\n parentRef={rootRef}\n >\n <section className={`${CLASSNAME}__wrapper`} ref={wrapperRef}>\n {(header || headerChildContent) && (\n <header\n {...headerChildProps}\n className={classNames(\n `${CLASSNAME}__header`,\n (forceHeaderDivider || hasTopIntersection) &&\n `${CLASSNAME}__header--has-divider`,\n headerChildProps?.className,\n )}\n >\n {header}\n {headerChildContent}\n </header>\n )}\n\n <div\n ref={mergeRefs(contentRef, localContentRef)}\n className={`${CLASSNAME}__content`}\n >\n <div\n className={`${CLASSNAME}__sentinel ${CLASSNAME}__sentinel--top`}\n ref={setSentinelTop}\n />\n\n {content}\n\n <div\n className={`${CLASSNAME}__sentinel ${CLASSNAME}__sentinel--bottom`}\n ref={setSentinelBottom}\n />\n </div>\n\n {(footer || footerChildContent) && (\n <footer\n {...footerChildProps}\n className={classNames(\n `${CLASSNAME}__footer`,\n (forceFooterDivider || hasBottomIntersection) &&\n `${CLASSNAME}__footer--has-divider`,\n footerChildProps?.className,\n )}\n >\n {footer}\n {footerChildContent}\n </footer>\n )}\n\n {isLoading && (\n <div className={`${CLASSNAME}__progress-overlay`}>\n <Progress variant={ProgressVariant.circular} />\n </div>\n )}\n </section>\n </ClickAwayProvider>\n </div>\n </ThemeProvider>\n </HeadingLevelProvider>\n </div>\n </Portal>\n ) : null;\n});\nDialog.displayName = COMPONENT_NAME;\nDialog.className = CLASSNAME;\nDialog.defaultProps = DEFAULT_PROPS;\n"],"names":["useIntersectionObserver","elements","options","intersections","setIntersections","useState","Map","useEffect","length","some","Boolean","undefined","observer","IntersectionObserver","entries","entry","set","target","element","observe","disconnect","isHeader","isComponent","isFooter","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","size","Size","big","disableBodyScroll","Dialog","forwardRef","props","ref","DOCUMENT","children","className","header","focusElement","forceFooterDivider","forceHeaderDivider","footer","isLoading","isOpen","onClose","parentElement","contentRef","preventAutoClose","zIndex","dialogProps","onVisibilityChange","preventCloseOnClick","preventCloseOnEscape","forwardedProps","previousOpen","React","useRef","current","focus","shouldPreventCloseOnEscape","useCallbackOnEscape","wrapperRef","localContentRef","useFocusTrap","useDisableBodyScroll","sentinelTop","setSentinelTop","sentinelBottom","setSentinelBottom","threshold","hasTopIntersection","get","isIntersecting","hasBottomIntersection","headerChild","footerChild","content","useMemo","partitionMulti","Children","toArray","headerChildProps","headerChildContent","footerChildProps","footerChildContent","clickAwayRefs","rootRef","isVisible","useTransitionVisibility","DIALOG_TRANSITION_DURATION","shouldPreventCloseOnClickAway","_jsx","Portal","_jsxs","mergeRefs","classNames","handleBasicClasses","isHidden","isShown","prefix","style","HeadingLevelProvider","level","ThemeProvider","value","role","ClickAwayProvider","callback","childrenRefs","parentRef","Progress","variant","ProgressVariant","circular","displayName","defaultProps"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"drag-handle-137f71b6.js","sources":["../../../src/components/drag-handle/DragHandle.tsx"],"sourcesContent":["import classNames from 'classnames';\n\nimport { mdiDragVertical } from '@lumx/icons';\nimport { ColorPalette, Icon, Size, Theme } from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface DragHandleProps extends GenericProps, HasTheme {}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'DragHandle';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * DragHandle component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const DragHandle = forwardRef<DragHandleProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme();\n const { className, theme = defaultTheme, ...forwardedProps } = props;\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, theme }))}\n >\n <Icon\n icon={mdiDragVertical}\n color={theme === Theme.dark ? ColorPalette.light : ColorPalette.dark}\n size={Size.xs}\n />\n </div>\n );\n});\nDragHandle.displayName = COMPONENT_NAME;\nDragHandle.className = CLASSNAME;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DragHandle","forwardRef","props","ref","defaultTheme","useTheme","className","theme","forwardedProps","_jsx","classNames","handleBasicClasses","prefix","children","Icon","icon","mdiDragVertical","color","Theme","dark","ColorPalette","light","size","Size","xs","displayName"],"mappings":";;;;;;;;;AAcA;AACA;AACA;AACA,MAAMA,cAAc,GAAG,YAAY,CAAA;;AAEnC;AACA;AACA;AACA,MAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAc,CAAC,CAAA;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,UAAU,GAAGC,UAAU,CAAkC,CAACC,KAAK,EAAEC,GAAG,KAAK;AAClF,EAAA,MAAMC,YAAY,GAAGC,QAAQ,EAAE,CAAA;EAC/B,MAAM;IAAEC,SAAS;AAAEC,IAAAA,KAAK,GAAGH,YAAY;IAAE,GAAGI,cAAAA;AAAe,GAAC,GAAGN,KAAK,CAAA;AAEpE,EAAA,oBACIO,GAAA,CAAA,KAAA,EAAA;AACIN,IAAAA,GAAG,EAAEA,GAAI;AAAA,IAAA,GACLK,cAAc;AAClBF,IAAAA,SAAS,EAAEI,UAAU,CAACJ,SAAS,EAAEK,kBAAkB,CAAC;AAAEC,MAAAA,MAAM,EAAEd,SAAS;AAAES,MAAAA,KAAAA;AAAM,KAAC,CAAC,CAAE;IAAAM,QAAA,eAEnFJ,GAAA,CAACK,IAAI,EAAA;AACDC,MAAAA,IAAI,EAAEC,eAAgB;AACtBC,MAAAA,KAAK,EAAEV,KAAK,KAAKW,KAAK,CAACC,IAAI,GAAGC,YAAY,CAACC,KAAK,GAAGD,YAAY,CAACD,IAAK;MACrEG,IAAI,EAAEC,IAAI,CAACC,EAAAA;KACd,CAAA;AAAC,GACD,CAAC,CAAA;AAEd,CAAC,EAAC;AACFxB,UAAU,CAACyB,WAAW,GAAG5B,cAAc,CAAA;AACvCG,UAAU,CAACM,SAAS,GAAGR,SAAS;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"expansion-panel-38ed3d9f.js","sources":["../../../src/components/expansion-panel/ExpansionPanel.tsx"],"sourcesContent":["import React, { Children, PropsWithChildren, ReactNode, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { mdiChevronDown, mdiChevronUp } from '@lumx/icons';\n\nimport { ColorPalette, DragHandle, Emphasis, IconButton, IconButtonProps, Theme } from '@lumx/react';\nimport { GenericProps, HasCloseMode, HasTheme, isComponent } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { partitionMulti } from '@lumx/core/js/utils/collection/partitionMulti';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { isEmpty } from '@lumx/core/js/utils/collection/isEmpty';\nimport { IS_BROWSER } from '@lumx/react/constants';\n\n/**\n * Defines the props of the component.\n */\nexport interface ExpansionPanelProps extends GenericProps, HasCloseMode, HasTheme {\n /** Whether the expansion panel has a background. */\n hasBackground?: boolean;\n /** Whether the header has a divider. */\n hasHeaderDivider?: boolean;\n /** Whether the component is open or not. */\n isOpen?: boolean;\n /** Label text (overwritten if a `<header>` is provided in the children). */\n label?: string;\n /** On open callback. */\n onOpen?: (event: React.MouseEvent) => void;\n /** On close callback. */\n onClose?: (event: React.MouseEvent) => void;\n /** Props to pass to the toggle button (minus those already set by the ExpansionPanel props). */\n toggleButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n /** On toggle open or close callback. */\n onToggleOpen?(shouldOpen: boolean, event: React.MouseEvent): void;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'ExpansionPanel';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<ExpansionPanelProps> = {\n closeMode: 'unmount',\n};\n\nconst isDragHandle = isComponent(DragHandle);\nconst isHeader = isComponent('header');\nconst isFooter = isComponent('footer');\n\n/**\n * ExpansionPanel component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const ExpansionPanel = forwardRef<ExpansionPanelProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n className,\n closeMode = DEFAULT_PROPS.closeMode,\n children: anyChildren,\n hasBackground,\n hasHeaderDivider,\n isOpen,\n label,\n onClose,\n onOpen,\n onToggleOpen,\n theme = defaultTheme,\n toggleButtonProps,\n ...forwardedProps\n } = props;\n\n const children: ReactNode[] = Children.toArray(anyChildren);\n\n // Partition children by types.\n const [[dragHandle], [header], [footer], content] = partitionMulti(children, [isDragHandle, isHeader, isFooter]);\n\n // Either take the header in children or create one with the label.\n const headerProps: PropsWithChildren<any> = React.isValidElement(header) ? header.props : {};\n const headerContent =\n React.Children.count(headerProps.children) > 0 ? (\n headerProps.children\n ) : (\n <span className={`${CLASSNAME}__label`}>{label}</span>\n );\n\n const toggleOpen = (event: React.MouseEvent) => {\n const shouldOpen = !isOpen;\n\n if (onOpen && shouldOpen) {\n onOpen(event);\n }\n if (onClose && !shouldOpen) {\n onClose(event);\n }\n if (onToggleOpen) {\n onToggleOpen(shouldOpen, event);\n }\n };\n\n const color = theme === Theme.dark ? ColorPalette.light : ColorPalette.dark;\n\n const rootClassName = classNames(\n className,\n handleBasicClasses({\n hasBackground,\n hasHeader: !isEmpty(headerProps.children),\n hasHeaderDivider,\n isClose: !isOpen,\n isDraggable: Boolean(dragHandle),\n isOpen,\n prefix: CLASSNAME,\n theme,\n }),\n );\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n // Children stay visible while the open/close transition is running\n const [isChildrenVisible, setChildrenVisible] = React.useState(isOpen);\n\n const isOpenRef = React.useRef(isOpen);\n React.useEffect(() => {\n if (isOpen || closeMode === 'hide') {\n setChildrenVisible(true);\n } else if (!IS_BROWSER) {\n // Outside a browser we can't wait for the transition\n setChildrenVisible(false);\n }\n isOpenRef.current = isOpen;\n }, [closeMode, isOpen]);\n\n // Change children's visibility on the transition end\n React.useEffect(() => {\n const { current: wrapper } = wrapperRef;\n if (!IS_BROWSER || !wrapper) {\n return undefined;\n }\n const onTransitionEnd = () => {\n setChildrenVisible(isOpenRef.current || closeMode === 'hide');\n };\n wrapper.addEventListener('transitionend', onTransitionEnd);\n return () => wrapper.removeEventListener('transitionend', onTransitionEnd);\n }, [closeMode]);\n\n return (\n <section ref={ref} {...forwardedProps} className={rootClassName}>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}\n <header className={`${CLASSNAME}__header`} onClick={toggleOpen}>\n {dragHandle && <div className={`${CLASSNAME}__header-drag`}>{dragHandle}</div>}\n\n <div {...headerProps} className={`${CLASSNAME}__header-content`}>\n {headerContent}\n </div>\n\n <div className={`${CLASSNAME}__header-toggle`}>\n <IconButton\n {...toggleButtonProps}\n color={color}\n emphasis={Emphasis.low}\n icon={isOpen ? mdiChevronUp : mdiChevronDown}\n aria-expanded={isOpen || 'false'}\n />\n </div>\n </header>\n\n <div className={`${CLASSNAME}__wrapper`} ref={wrapperRef}>\n {(isOpen || isChildrenVisible) && (\n <div className={`${CLASSNAME}__container`}>\n <div className={`${CLASSNAME}__content`}>{content}</div>\n\n {footer && <div className={`${CLASSNAME}__footer`}>{footer}</div>}\n </div>\n )}\n </div>\n </section>\n );\n});\nExpansionPanel.displayName = COMPONENT_NAME;\nExpansionPanel.className = CLASSNAME;\nExpansionPanel.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","closeMode","isDragHandle","isComponent","DragHandle","isHeader","isFooter","ExpansionPanel","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","className","children","anyChildren","hasBackground","hasHeaderDivider","isOpen","label","onClose","onOpen","onToggleOpen","theme","toggleButtonProps","forwardedProps","Children","toArray","dragHandle","header","footer","content","partitionMulti","headerProps","React","isValidElement","headerContent","count","_jsx","toggleOpen","event","shouldOpen","color","dark","ColorPalette","rootClassName","classNames","handleBasicClasses","hasHeader","isEmpty","isClose","isDraggable","Boolean","prefix","wrapperRef","useRef","isChildrenVisible","setChildrenVisible","useState","isOpenRef","useEffect","IS_BROWSER","current","wrapper","undefined","onTransitionEnd","addEventListener","removeEventListener","_jsxs","onClick","IconButton","emphasis","Emphasis","low","icon","mdiChevronUp","mdiChevronDown","displayName","defaultProps"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"flex-box-15be92f6.js","sources":["../../../src/components/flex-box/FlexBox.tsx"],"sourcesContent":["import { ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Alignment, Orientation, HorizontalAlignment, Size, VerticalAlignment } from '@lumx/core/js/constants';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { castArray } from '@lumx/core/js/utils/collection/castArray';\n\nexport type MarginAutoAlignment = Extract<Alignment, 'top' | 'bottom' | 'right' | 'left'>;\nexport type GapSize = Extract<Size, 'tiny' | 'regular' | 'medium' | 'big' | 'huge'>;\ntype SpaceAlignment = Extract<Alignment, 'space-between' | 'space-evenly' | 'space-around'>;\nexport type FlexVerticalAlignment = VerticalAlignment | SpaceAlignment;\nexport type FlexHorizontalAlignment = HorizontalAlignment | SpaceAlignment;\n\n/**\n * Defines the props of the component.\n */\nexport interface FlexBoxProps extends GenericProps {\n /** Customize the root element. */\n as?: React.ElementType;\n /** Children elements. */\n children?: ReactNode;\n /** Whether the \"content filling space\" is enabled or not. */\n fillSpace?: boolean;\n /** Gap space between flexbox items. */\n gap?: GapSize;\n /** Flex horizontal alignment. */\n hAlign?: FlexVerticalAlignment;\n /** Whether the \"auto margin\" is enabled all around or not. */\n marginAuto?: MarginAutoAlignment | MarginAutoAlignment[];\n /** Whether the \"content shrink\" is disabled or not. */\n noShrink?: boolean;\n /** Flex direction. */\n orientation?: Orientation;\n /** Flex vertical alignment. */\n vAlign?: FlexHorizontalAlignment;\n /** Whether the \"flex wrap\" is enabled or not. */\n wrap?: boolean;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'FlexBox';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * FlexBox component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const FlexBox = forwardRef<FlexBoxProps, HTMLDivElement>((props, ref) => {\n const {\n as: Component = 'div',\n children,\n className,\n fillSpace,\n gap,\n hAlign,\n marginAuto,\n noShrink,\n orientation,\n vAlign,\n wrap,\n ...forwardedProps\n } = props;\n\n return (\n <Component\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n orientation: orientation ?? (wrap || hAlign || vAlign ? Orientation.horizontal : null),\n vAlign,\n hAlign,\n gap,\n }),\n wrap && `${CLASSNAME}--wrap`,\n fillSpace && `${CLASSNAME}--fill-space`,\n noShrink && `${CLASSNAME}--no-shrink`,\n marginAuto && castArray(marginAuto).map((align) => `${CLASSNAME}--margin-auto-${align}`),\n )}\n >\n {children}\n </Component>\n );\n});\nFlexBox.displayName = COMPONENT_NAME;\nFlexBox.className = CLASSNAME;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","FlexBox","forwardRef","props","ref","as","Component","children","className","fillSpace","gap","hAlign","marginAuto","noShrink","orientation","vAlign","wrap","forwardedProps","_jsx","classNames","handleBasicClasses","prefix","Orientation","horizontal","castArray","map","align","displayName"],"mappings":";;;;;;;AA0CA;AACA;AACA;AACA,MAAMA,cAAc,GAAG,SAAS,CAAA;;AAEhC;AACA;AACA;AACA,MAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAc,CAAC,CAAA;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,OAAO,GAAGC,UAAU,CAA+B,CAACC,KAAK,EAAEC,GAAG,KAAK;EAC5E,MAAM;IACFC,EAAE,EAAEC,SAAS,GAAG,KAAK;IACrBC,QAAQ;IACRC,SAAS;IACTC,SAAS;IACTC,GAAG;IACHC,MAAM;IACNC,UAAU;IACVC,QAAQ;IACRC,WAAW;IACXC,MAAM;IACNC,IAAI;IACJ,GAAGC,cAAAA;AACP,GAAC,GAAGd,KAAK,CAAA;EAET,oBACIe,GAAA,CAACZ,SAAS,EAAA;AACNF,IAAAA,GAAG,EAAEA,GAAI;AAAA,IAAA,GACLa,cAAc;AAClBT,IAAAA,SAAS,EAAEW,UAAU,CACjBX,SAAS,EACTY,kBAAkB,CAAC;AACfC,MAAAA,MAAM,EAAEtB,SAAS;AACjBe,MAAAA,WAAW,EAAEA,WAAW,KAAKE,IAAI,IAAIL,MAAM,IAAII,MAAM,GAAGO,WAAW,CAACC,UAAU,GAAG,IAAI,CAAC;MACtFR,MAAM;MACNJ,MAAM;AACND,MAAAA,GAAAA;AACJ,KAAC,CAAC,EACFM,IAAI,IAAI,CAAA,EAAGjB,SAAS,CAAQ,MAAA,CAAA,EAC5BU,SAAS,IAAI,GAAGV,SAAS,CAAA,YAAA,CAAc,EACvCc,QAAQ,IAAI,CAAGd,EAAAA,SAAS,CAAa,WAAA,CAAA,EACrCa,UAAU,IAAIY,SAAS,CAACZ,UAAU,CAAC,CAACa,GAAG,CAAEC,KAAK,IAAK,CAAG3B,EAAAA,SAAS,iBAAiB2B,KAAK,CAAA,CAAE,CAC3F,CAAE;AAAAnB,IAAAA,QAAA,EAEDA,QAAAA;AAAQ,GACF,CAAC,CAAA;AAEpB,CAAC,EAAC;AACFN,OAAO,CAAC0B,WAAW,GAAG7B,cAAc,CAAA;AACpCG,OAAO,CAACO,SAAS,GAAGT,SAAS;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"generic-block-5d843f1e.js","sources":["../../../src/components/generic-block/GenericBlock.tsx","../../../src/components/generic-block/constants.ts"],"sourcesContent":["import React, { Children, ReactElement, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Comp, isComponentType } from '@lumx/react/utils/type';\nimport { getRootClassName } from '@lumx/core/js/utils/className';\nimport { partitionMulti } from '@lumx/core/js/utils/collection/partitionMulti';\nimport { Orientation, Size, FlexBox, FlexBoxProps } from '@lumx/react';\nimport { GenericBlockGapSize } from '@lumx/react/components/generic-block/constants';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nexport interface GenericBlockProps extends FlexBoxProps {\n /**\n * Component to use as visual element.\n */\n figure?: ReactNode;\n /**\n * Actions to set after the main content.\n */\n actions?: ReactNode;\n /**\n * Main content to display or sections components\n * ({@see GenericBlock.Figure}, {@see GenericBlock.Content} & {@see GenericBlock.Actions})\n */\n children: ReactNode;\n /**\n * Orientation of the 3 sections\n */\n orientation?: FlexBoxProps['orientation'];\n /**\n * Horizontal alignment.\n */\n hAlign?: FlexBoxProps['hAlign'];\n /**\n * Vertical alignment.\n */\n vAlign?: FlexBoxProps['vAlign'];\n /**\n * The props to forward to the content.\n * By default, the content will have the same alignment as wrapper.\n */\n contentProps?: Omit<FlexBoxProps, 'children'>;\n /**\n * props to forward to the actions element.\n */\n actionsProps?: Omit<FlexBoxProps, 'children'>;\n /**\n * props to forward to the figure element.\n */\n figureProps?: Omit<FlexBoxProps, 'children'>;\n /**\n * Gap space between sections.\n */\n gap?: GenericBlockGapSize;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'GenericBlock';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<GenericBlockProps> = {\n gap: Size.big,\n orientation: Orientation.horizontal,\n};\n\ntype BaseGenericBlock = Comp<GenericBlockProps, HTMLDivElement>;\n\ninterface GenericBlockSectionProps extends FlexBoxProps {\n /**\n * Gap space between items.\n */\n gap?: GenericBlockGapSize;\n}\n\ninterface GenericBlock extends BaseGenericBlock {\n /**\n * Use `GenericBlock.Figure` component as children of the `GenericBlock` component as an alternative way to inject\n * the \"figure\" section of the block (instead of using `figure` and `figureProps` props).\n */\n Figure: Comp<GenericBlockSectionProps>;\n /**\n * Use `GenericBlock.Content` component as children of the `GenericBlock` component as an alternative way to inject\n * the \"content\" section of the block (instead of using `content` and `contentProps` props).\n */\n Content: Comp<GenericBlockSectionProps>;\n /**\n * Use `GenericBlock.Actions` component as children of the `GenericBlock` component as an alternative way to inject\n * the \"actions\" section of the block (instead of using `actions` and `actionsProps` props).\n */\n Actions: Comp<GenericBlockSectionProps>;\n}\n\nconst Figure = (() => {}) as unknown as Comp<FlexBoxProps>;\nconst isFigure = isComponentType(Figure);\n\nconst Content = (() => {}) as unknown as Comp<FlexBoxProps>;\nconst isContent = isComponentType(Content);\n\nconst Actions = (() => {}) as unknown as Comp<FlexBoxProps>;\nconst isActions = isComponentType(Actions);\n\n/**\n * The GenericBlock is a layout component made of 3 sections that can be\n * displayed either horizontally of vertically with the same gap between each section.\n *\n * The sections are:\n * - `Figure` => A visual element to display before the main content.\n * - `Content` => The main content displayed\n * - `Actions` => One or more actions to set after the element.\n *\n * @see https://www.figma.com/file/lzzrQmsfaXRaOyRfoEogPZ/DS%3A-playground?node-id=1%3A4076\n */\nconst BaseGenericBlock: BaseGenericBlock = forwardRef((props, ref) => {\n const {\n className,\n figure,\n figureProps,\n children,\n actions,\n actionsProps,\n gap = DEFAULT_PROPS.gap,\n orientation = DEFAULT_PROPS.orientation,\n contentProps,\n ...forwardedProps\n } = props;\n\n const sections = React.useMemo(() => {\n // Split children by section type\n const [[figureChild], [contentChild], [actionsChild], ...otherChildren] = partitionMulti(\n Children.toArray(children),\n [isFigure, isContent, isActions],\n );\n return {\n figureChild,\n figureChildProps: (figureChild as ReactElement)?.props,\n contentChild,\n contentChildProps: (contentChild as ReactElement)?.props,\n actionsChild,\n actionsChildProps: (actionsChild as ReactElement)?.props,\n otherChildren: otherChildren.filter((child) => React.Children.count(child) > 0),\n };\n }, [children]);\n\n return (\n <FlexBox\n ref={ref}\n className={classNames(className, CLASSNAME)}\n gap={gap}\n orientation={orientation}\n {...forwardedProps}\n >\n {(figure || sections.figureChildProps?.children) && (\n <FlexBox\n ref={(sections.figureChild as any)?.ref}\n vAlign={forwardedProps.vAlign}\n hAlign={forwardedProps.hAlign}\n {...figureProps}\n {...sections.figureChildProps}\n className={classNames(\n figureProps?.className,\n sections.figureChildProps?.className,\n `${CLASSNAME}__figure`,\n )}\n >\n {figure}\n {sections.figureChildProps?.children}\n </FlexBox>\n )}\n\n {(sections.contentChildProps?.children || sections.otherChildren.length > 0) && (\n <FlexBox\n ref={(sections.contentChild as any)?.ref}\n orientation={Orientation.vertical}\n fillSpace\n vAlign={forwardedProps.vAlign}\n hAlign={forwardedProps.hAlign}\n {...contentProps}\n {...sections.contentChildProps}\n className={classNames(\n contentProps?.className,\n sections.contentChildProps?.className,\n `${CLASSNAME}__content`,\n )}\n >\n {sections.contentChildProps?.children}\n {sections.otherChildren}\n </FlexBox>\n )}\n\n {(actions || sections.actionsChildProps?.children) && (\n <FlexBox\n ref={(sections.actionsChild as any)?.ref}\n vAlign={forwardedProps.vAlign}\n hAlign={forwardedProps.hAlign}\n {...actionsProps}\n {...sections.actionsChildProps}\n className={classNames(\n actionsProps?.className,\n sections.actionsChildProps?.className,\n `${CLASSNAME}__actions`,\n )}\n >\n {actions}\n {sections.actionsChildProps?.children}\n </FlexBox>\n )}\n </FlexBox>\n );\n});\nBaseGenericBlock.displayName = COMPONENT_NAME;\nBaseGenericBlock.className = CLASSNAME;\nBaseGenericBlock.defaultProps = DEFAULT_PROPS;\n\nexport const GenericBlock: GenericBlock = Object.assign(BaseGenericBlock, { Figure, Content, Actions });\n","import { Size } from '@lumx/react';\n\nexport type GenericBlockGapSize = Extract<Size, 'tiny' | 'regular' | 'medium' | 'big' | 'huge'>;\n\n/**\n * Accepted gap sizes for the generic block.\n */\nexport const GenericBlockGapSize: { [S in GenericBlockGapSize]: S } = {\n tiny: Size.tiny,\n regular: Size.regular,\n medium: Size.medium,\n big: Size.big,\n huge: Size.huge,\n};\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","gap","Size","big","orientation","Orientation","horizontal","Figure","isFigure","isComponentType","Content","isContent","Actions","isActions","BaseGenericBlock","forwardRef","props","ref","className","figure","figureProps","children","actions","actionsProps","contentProps","forwardedProps","sections","React","useMemo","figureChild","contentChild","actionsChild","otherChildren","partitionMulti","Children","toArray","figureChildProps","contentChildProps","actionsChildProps","filter","child","count","_jsxs","FlexBox","classNames","vAlign","hAlign","length","vertical","fillSpace","displayName","defaultProps","GenericBlock","Object","assign","GenericBlockGapSize","tiny","regular","medium","huge"],"mappings":";;;;;;;;;;AAwDA;AACA;AACA;AACA,MAAMA,cAAc,GAAG,cAAc,CAAA;;AAErC;AACA;AACA;AACA,MAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAc,CAAC,CAAA;;AAElD;AACA;AACA;AACA,MAAMG,aAAyC,GAAG;EAC9CC,GAAG,EAAEC,IAAI,CAACC,GAAG;EACbC,WAAW,EAAEC,WAAW,CAACC,UAAAA;AAC7B,CAAC,CAAA;AA6BD,MAAMC,MAAM,GAAIA,MAAM,EAAoC,CAAA;AAC1D,MAAMC,QAAQ,GAAGC,eAAe,CAACF,MAAM,CAAC,CAAA;AAExC,MAAMG,OAAO,GAAIA,MAAM,EAAoC,CAAA;AAC3D,MAAMC,SAAS,GAAGF,eAAe,CAACC,OAAO,CAAC,CAAA;AAE1C,MAAME,OAAO,GAAIA,MAAM,EAAoC,CAAA;AAC3D,MAAMC,SAAS,GAAGJ,eAAe,CAACG,OAAO,CAAC,CAAA;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAME,gBAAkC,GAAGC,UAAU,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAK;EAClE,MAAM;IACFC,SAAS;IACTC,MAAM;IACNC,WAAW;IACXC,QAAQ;IACRC,OAAO;IACPC,YAAY;IACZtB,GAAG,GAAGD,aAAa,CAACC,GAAG;IACvBG,WAAW,GAAGJ,aAAa,CAACI,WAAW;IACvCoB,YAAY;IACZ,GAAGC,cAAAA;AACP,GAAC,GAAGT,KAAK,CAAA;AAET,EAAA,MAAMU,QAAQ,GAAGC,cAAK,CAACC,OAAO,CAAC,MAAM;AACjC;AACA,IAAA,MAAM,CAAC,CAACC,WAAW,CAAC,EAAE,CAACC,YAAY,CAAC,EAAE,CAACC,YAAY,CAAC,EAAE,GAAGC,aAAa,CAAC,GAAGC,cAAc,CACpFC,QAAQ,CAACC,OAAO,CAACd,QAAQ,CAAC,EAC1B,CAACb,QAAQ,EAAEG,SAAS,EAAEE,SAAS,CACnC,CAAC,CAAA;IACD,OAAO;MACHgB,WAAW;MACXO,gBAAgB,EAAGP,WAAW,EAAmBb,KAAK;MACtDc,YAAY;MACZO,iBAAiB,EAAGP,YAAY,EAAmBd,KAAK;MACxDe,YAAY;MACZO,iBAAiB,EAAGP,YAAY,EAAmBf,KAAK;AACxDgB,MAAAA,aAAa,EAAEA,aAAa,CAACO,MAAM,CAAEC,KAAK,IAAKb,cAAK,CAACO,QAAQ,CAACO,KAAK,CAACD,KAAK,CAAC,GAAG,CAAC,CAAA;KACjF,CAAA;AACL,GAAC,EAAE,CAACnB,QAAQ,CAAC,CAAC,CAAA;EAEd,oBACIqB,IAAA,CAACC,OAAO,EAAA;AACJ1B,IAAAA,GAAG,EAAEA,GAAI;AACTC,IAAAA,SAAS,EAAE0B,UAAU,CAAC1B,SAAS,EAAEpB,SAAS,CAAE;AAC5CG,IAAAA,GAAG,EAAEA,GAAI;AACTG,IAAAA,WAAW,EAAEA,WAAY;AAAA,IAAA,GACrBqB,cAAc;AAAAJ,IAAAA,QAAA,EAEjB,CAAA,CAACF,MAAM,IAAIO,QAAQ,CAACU,gBAAgB,EAAEf,QAAQ,kBAC3CqB,IAAA,CAACC,OAAO,EAAA;AACJ1B,MAAAA,GAAG,EAAGS,QAAQ,CAACG,WAAW,EAAUZ,GAAI;MACxC4B,MAAM,EAAEpB,cAAc,CAACoB,MAAO;MAC9BC,MAAM,EAAErB,cAAc,CAACqB,MAAO;AAAA,MAAA,GAC1B1B,WAAW;MAAA,GACXM,QAAQ,CAACU,gBAAgB;AAC7BlB,MAAAA,SAAS,EAAE0B,UAAU,CACjBxB,WAAW,EAAEF,SAAS,EACtBQ,QAAQ,CAACU,gBAAgB,EAAElB,SAAS,EACpC,CAAGpB,EAAAA,SAAS,UAChB,CAAE;AAAAuB,MAAAA,QAAA,GAEDF,MAAM,EACNO,QAAQ,CAACU,gBAAgB,EAAEf,QAAQ,CAAA;AAAA,KAC/B,CACZ,EAEA,CAACK,QAAQ,CAACW,iBAAiB,EAAEhB,QAAQ,IAAIK,QAAQ,CAACM,aAAa,CAACe,MAAM,GAAG,CAAC,kBACvEL,IAAA,CAACC,OAAO,EAAA;AACJ1B,MAAAA,GAAG,EAAGS,QAAQ,CAACI,YAAY,EAAUb,GAAI;MACzCb,WAAW,EAAEC,WAAW,CAAC2C,QAAS;MAClCC,SAAS,EAAA,IAAA;MACTJ,MAAM,EAAEpB,cAAc,CAACoB,MAAO;MAC9BC,MAAM,EAAErB,cAAc,CAACqB,MAAO;AAAA,MAAA,GAC1BtB,YAAY;MAAA,GACZE,QAAQ,CAACW,iBAAiB;AAC9BnB,MAAAA,SAAS,EAAE0B,UAAU,CACjBpB,YAAY,EAAEN,SAAS,EACvBQ,QAAQ,CAACW,iBAAiB,EAAEnB,SAAS,EACrC,CAAGpB,EAAAA,SAAS,WAChB,CAAE;MAAAuB,QAAA,EAAA,CAEDK,QAAQ,CAACW,iBAAiB,EAAEhB,QAAQ,EACpCK,QAAQ,CAACM,aAAa,CAAA;AAAA,KAClB,CACZ,EAEA,CAACV,OAAO,IAAII,QAAQ,CAACY,iBAAiB,EAAEjB,QAAQ,kBAC7CqB,IAAA,CAACC,OAAO,EAAA;AACJ1B,MAAAA,GAAG,EAAGS,QAAQ,CAACK,YAAY,EAAUd,GAAI;MACzC4B,MAAM,EAAEpB,cAAc,CAACoB,MAAO;MAC9BC,MAAM,EAAErB,cAAc,CAACqB,MAAO;AAAA,MAAA,GAC1BvB,YAAY;MAAA,GACZG,QAAQ,CAACY,iBAAiB;AAC9BpB,MAAAA,SAAS,EAAE0B,UAAU,CACjBrB,YAAY,EAAEL,SAAS,EACvBQ,QAAQ,CAACY,iBAAiB,EAAEpB,SAAS,EACrC,CAAGpB,EAAAA,SAAS,WAChB,CAAE;AAAAuB,MAAAA,QAAA,GAEDC,OAAO,EACPI,QAAQ,CAACY,iBAAiB,EAAEjB,QAAQ,CAAA;AAAA,KAChC,CACZ,CAAA;AAAA,GACI,CAAC,CAAA;AAElB,CAAC,CAAC,CAAA;AACFP,gBAAgB,CAACoC,WAAW,GAAGrD,cAAc,CAAA;AAC7CiB,gBAAgB,CAACI,SAAS,GAAGpB,SAAS,CAAA;AACtCgB,gBAAgB,CAACqC,YAAY,GAAGnD,aAAa,CAAA;AAEtC,MAAMoD,YAA0B,GAAGC,MAAM,CAACC,MAAM,CAACxC,gBAAgB,EAAE;EAAEP,MAAM;EAAEG,OAAO;AAAEE,EAAAA,OAAAA;AAAQ,CAAC;;AC1NtG;AACA;AACA;AACO,MAAM2C,mBAAsD,GAAG;EAClEC,IAAI,EAAEtD,IAAI,CAACsD,IAAI;EACfC,OAAO,EAAEvD,IAAI,CAACuD,OAAO;EACrBC,MAAM,EAAExD,IAAI,CAACwD,MAAM;EACnBvD,GAAG,EAAED,IAAI,CAACC,GAAG;EACbwD,IAAI,EAAEzD,IAAI,CAACyD,IAAAA;AACf;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"grid-column-85e305e7.js","sources":["../../../src/components/grid-column/GridColumn.tsx"],"sourcesContent":["import { ReactElement, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Size } from '@lumx/react';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nexport type GridColumnGapSize = Extract<Size, 'tiny' | 'regular' | 'big' | 'huge'>;\n\n/**\n * Defines the props of the component.\n */\nexport interface GridColumnProps extends GenericProps {\n /** Customize the root element. */\n as?: React.ElementType;\n /** Children elements. */\n children?: ReactNode;\n /** Space between columns and rows. */\n gap?: GridColumnGapSize;\n /** Ideal number of columns. */\n maxColumns?: number;\n /** Minimum width for each item, reduce the number of column if there is not enough space. */\n itemMinWidth?: number;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'GridColumn';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<GridColumnProps> = {};\n\n/**\n * The GridColumn is a layout component that can display children in a grid\n * with custom display properties. It also comes with a responsive design,\n * with a number of column that reduce when there is not enough space for each item.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const GridColumn = forwardRef<GridColumnProps>((props, ref): ReactElement => {\n const {\n as: Component = 'div',\n gap,\n maxColumns,\n itemMinWidth,\n children,\n className,\n style = {},\n ...forwardedProps\n } = props;\n\n return (\n <Component\n {...forwardedProps}\n ref={ref as React.Ref<any>}\n className={classNames(className, CLASSNAME)}\n style={{\n ...style,\n ['--lumx-grid-column-item-min-width' as any]: Number.isInteger(itemMinWidth) && `${itemMinWidth}px`,\n ['--lumx-grid-column-columns' as any]: maxColumns,\n ['--lumx-grid-column-gap' as any]: gap && `var(--lumx-spacing-unit-${gap})`,\n }}\n >\n {children}\n </Component>\n );\n});\nGridColumn.displayName = COMPONENT_NAME;\nGridColumn.className = CLASSNAME;\nGridColumn.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","GridColumn","forwardRef","props","ref","as","Component","gap","maxColumns","itemMinWidth","children","className","style","forwardedProps","_jsx","classNames","Number","isInteger","displayName","defaultProps"],"mappings":";;;;;AA2BA;AACA;AACA;AACA,MAAMA,cAAc,GAAG,YAAY,CAAA;;AAEnC;AACA;AACA;AACA,MAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAc,CAAC,CAAA;;AAElD;AACA;AACA;AACA,MAAMG,aAAuC,GAAG,EAAE,CAAA;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,UAAU,GAAGC,UAAU,CAAkB,CAACC,KAAK,EAAEC,GAAG,KAAmB;EAChF,MAAM;IACFC,EAAE,EAAEC,SAAS,GAAG,KAAK;IACrBC,GAAG;IACHC,UAAU;IACVC,YAAY;IACZC,QAAQ;IACRC,SAAS;IACTC,KAAK,GAAG,EAAE;IACV,GAAGC,cAAAA;AACP,GAAC,GAAGV,KAAK,CAAA;EAET,oBACIW,GAAA,CAACR,SAAS,EAAA;AAAA,IAAA,GACFO,cAAc;AAClBT,IAAAA,GAAG,EAAEA,GAAsB;AAC3BO,IAAAA,SAAS,EAAEI,UAAU,CAACJ,SAAS,EAAEb,SAAS,CAAE;AAC5Cc,IAAAA,KAAK,EAAE;AACH,MAAA,GAAGA,KAAK;MACR,CAAC,mCAAmC,GAAUI,MAAM,CAACC,SAAS,CAACR,YAAY,CAAC,IAAI,CAAGA,EAAAA,YAAY,CAAI,EAAA,CAAA;MACnG,CAAC,4BAA4B,GAAUD,UAAU;AACjD,MAAA,CAAC,wBAAwB,GAAUD,GAAG,IAAI,2BAA2BA,GAAG,CAAA,CAAA,CAAA;KAC1E;AAAAG,IAAAA,QAAA,EAEDA,QAAAA;AAAQ,GACF,CAAC,CAAA;AAEpB,CAAC,EAAC;AACFT,UAAU,CAACiB,WAAW,GAAGrB,cAAc,CAAA;AACvCI,UAAU,CAACU,SAAS,GAAGb,SAAS,CAAA;AAChCG,UAAU,CAACkB,YAAY,GAAGnB,aAAa;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"icon-a00d698b.js","sources":["../../../src/components/icon/Icon.tsx"],"sourcesContent":["import classNames from 'classnames';\n\nimport { mdiAlertCircle } from '@lumx/icons';\nimport { ColorPalette, ColorVariant, ColorWithVariants, Size, Theme } from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses, resolveColorWithVariants } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\n\nexport type IconSizes = Extract<Size, 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl'>;\n\n/**\n * Defines the props of the component.\n */\nexport interface IconProps extends GenericProps, HasTheme {\n /** Color variant. */\n color?: ColorWithVariants;\n /** Lightened or darkened variant of the selected icon color. */\n colorVariant?: ColorVariant;\n /** Whether the icon has a shape. */\n hasShape?: boolean;\n /**\n * Icon (SVG path) draw code (`d` property of the `<path>` SVG element).\n * See https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths\n */\n icon: string;\n /** Size variant. */\n size?: IconSizes;\n /** Sets an alternative text on the svg. Will set an `img` role to the svg. */\n alt?: string;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Icon';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<IconProps> = {};\n\n/**\n * Icon component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Icon = forwardRef<IconProps, HTMLElement>((props, ref) => {\n const defaultTheme = useTheme();\n const {\n className,\n color: propColor,\n colorVariant: propColorVariant,\n hasShape,\n icon,\n size,\n theme = defaultTheme,\n alt,\n ...forwardedProps\n } = props;\n const [color, colorVariant] = resolveColorWithVariants(propColor, propColorVariant);\n\n // Color\n let iconColor = color;\n if (!iconColor && (hasShape || theme)) {\n iconColor = theme === Theme.dark ? ColorPalette.light : ColorPalette.dark;\n }\n\n // Color variant\n let iconColorVariant = colorVariant;\n if (!iconColorVariant && hasShape && iconColor === ColorPalette.dark) {\n iconColorVariant = 'L2';\n }\n\n // Size\n let iconSize = size;\n if (size && hasShape) {\n if (size === Size.xxs || size === Size.xs) {\n iconSize = Size.s;\n } else if (size === Size.xxl) {\n iconSize = Size.xl;\n }\n } else if (hasShape) {\n iconSize = Size.m;\n }\n\n return (\n <i\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n color: iconColor,\n colorVariant: iconColorVariant,\n hasShape,\n prefix: CLASSNAME,\n theme,\n size: iconSize,\n }),\n !hasShape && `${CLASSNAME}--no-shape`,\n !hasShape &&\n iconColor === ColorPalette.yellow &&\n icon === mdiAlertCircle &&\n `${CLASSNAME}--has-dark-layer`,\n `${CLASSNAME}--path`,\n )}\n >\n <svg\n aria-hidden={alt ? undefined : 'true'}\n role={alt ? 'img' : undefined}\n aria-label={alt}\n height=\"1em\"\n preserveAspectRatio=\"xMidYMid meet\"\n style={{ verticalAlign: '-0.125em' }}\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n >\n <path d={icon} fill=\"currentColor\" />\n </svg>\n </i>\n );\n});\nIcon.displayName = COMPONENT_NAME;\nIcon.className = CLASSNAME;\nIcon.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","Icon","forwardRef","props","ref","defaultTheme","useTheme","className","color","propColor","colorVariant","propColorVariant","hasShape","icon","size","theme","alt","forwardedProps","resolveColorWithVariants","iconColor","Theme","dark","ColorPalette","light","iconColorVariant","iconSize","Size","xxs","xs","s","xxl","xl","m","_jsx","classNames","handleBasicClasses","prefix","yellow","mdiAlertCircle","children","undefined","role","height","preserveAspectRatio","style","verticalAlign","viewBox","width","d","fill","displayName","defaultProps"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-lightbox-86f1e1fb.js","sources":["../../../src/components/image-lightbox/constants.ts","../../../src/hooks/useSizeOnWindowResize.ts","../../../src/hooks/useImageSize.ts","../../../src/utils/object/isEqual.ts","../../../src/components/image-lightbox/internal/usePointerZoom.ts","../../../src/components/image-lightbox/internal/useAnimateScroll.ts","../../../src/components/image-lightbox/internal/ImageSlide.tsx","../../../src/components/image-lightbox/internal/ImageSlideshow.tsx","../../../src/utils/react/unref.ts","../../../src/utils/browser/DOM/startViewTransition.ts","../../../src/utils/browser/DOM/findImage.tsx","../../../src/components/image-lightbox/useImageLightbox.tsx","../../../src/components/image-lightbox/ImageLightbox.tsx"],"sourcesContent":["import { getRootClassName } from '@lumx/core/js/utils/className';\n\n/**\n * Component display name.\n */\nexport const COMPONENT_NAME = 'ImageLightbox';\n\n/**\n * Component default class name and class prefix.\n */\nexport const CLASSNAME = getRootClassName(COMPONENT_NAME);\n","import React from 'react';\n\nimport throttle from 'lodash/throttle';\nimport { RectSize } from '@lumx/react/utils/type';\n\n/**\n * Observe element size (only works if it's size depends on the window size).\n *\n * (Not using ResizeObserver for better browser backward compat)\n *\n * @param elementRef Element to observe\n * @return the size and a manual update callback\n */\nexport function useSizeOnWindowResize(elementRef: React.RefObject<HTMLElement>): [RectSize | null, () => void] {\n const [size, setSize] = React.useState<null | RectSize>(null);\n const updateSize = React.useMemo(\n () =>\n throttle(() => {\n const newSize = elementRef.current?.getBoundingClientRect();\n if (newSize) setSize(newSize);\n }, 10),\n [elementRef],\n );\n React.useEffect(() => {\n updateSize();\n window.addEventListener('resize', updateSize);\n return () => window.removeEventListener('resize', updateSize);\n }, [updateSize]);\n return [size, updateSize];\n}\n","import React from 'react';\nimport { RectSize } from '@lumx/react/utils/type';\n\n/** Get natural image size after load. */\nexport function useImageSize(imgRef: React.RefObject<HTMLImageElement>, getInitialSize?: () => RectSize | null) {\n const [imageSize, setImageSize] = React.useState<null | RectSize>(getInitialSize || null);\n React.useEffect(() => {\n const { current: img } = imgRef;\n if (!img) {\n return undefined;\n }\n const onLoad = () => setImageSize({ width: img.naturalWidth, height: img.naturalHeight });\n img.addEventListener('load', onLoad);\n return () => img.removeEventListener('load', onLoad);\n }, [imgRef]);\n return imageSize;\n}\n","/** Minimal recursive deep equal of JS values */\nexport function isEqual(obj1: any, obj2: any): boolean {\n if (obj1 === obj2) return true;\n if (typeof obj1 === 'object' && typeof obj2 === 'object') {\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length) return false;\n return keys1.every((key1) => isEqual(obj1[key1], obj2[key1]));\n }\n return false;\n}\n","import React from 'react';\nimport type { Point } from '@lumx/react/utils/type';\nimport type { useAnimateScroll } from './useAnimateScroll';\n\n/**\n * Listen to mouse wheel + ctrl and multi-pointer pinch to zoom\n */\nexport function usePointerZoom(\n scrollAreaRef: React.RefObject<HTMLDivElement>,\n onScaleChange: ((value: number) => void) | undefined,\n animateScroll: ReturnType<typeof useAnimateScroll>,\n) {\n const [isPointerZooming, setPointerZooming] = React.useState(false);\n React.useEffect(() => {\n const scrollArea = scrollAreaRef.current as HTMLDivElement;\n if (!scrollArea || !onScaleChange) {\n return undefined;\n }\n\n let animationFrame: number | null;\n let zoomStateTimeoutId: ReturnType<typeof setTimeout> | null;\n\n function updateScaleOnNextFrame(newScale: number, mousePosition: Point): void {\n // Cancel previously scheduled frame\n if (animationFrame) cancelAnimationFrame(animationFrame);\n\n // Cancel previously scheduled zoom state change\n if (zoomStateTimeoutId) clearTimeout(zoomStateTimeoutId);\n\n function nextFrame() {\n setPointerZooming(true);\n onScaleChange?.(newScale);\n\n animationFrame = null;\n // Wait a bit before indicating the pointer zooming is finished\n zoomStateTimeoutId = setTimeout(() => setPointerZooming(false), 100);\n }\n animationFrame = requestAnimationFrame(nextFrame);\n\n // Animate scroll in parallel (centering on the current mouse position)\n animateScroll(mousePosition, {\n width: scrollArea.scrollWidth,\n height: scrollArea.scrollHeight,\n });\n }\n\n function onWheel(event: WheelEvent) {\n if (!event.ctrlKey) {\n return;\n }\n event.preventDefault();\n const newScale = Math.exp(-event.deltaY / 50);\n\n // Update scale on next frame (focused on the mouse position)\n updateScaleOnNextFrame(newScale, {\n x: event.clientX,\n y: event.clientY,\n });\n }\n\n const activePointers: Record<PointerEvent['pointerId'], PointerEvent> = {};\n let prevDistance: number | null = null;\n let previousCenterPoint: Point | null = null;\n\n function onPointerDown(event: PointerEvent) {\n activePointers[event.pointerId] = event;\n }\n function onPointerMove(event: PointerEvent) {\n // Update pointer in cache\n if (activePointers[event.pointerId]) {\n activePointers[event.pointerId] = event;\n }\n\n const pointers = Object.values(activePointers);\n\n // Make sure we run computation on one of the pointer in the group\n if (pointers[0]?.pointerId !== event.pointerId) {\n return;\n }\n\n // Centered point between all pointers\n const centerPoint: Point = {\n x: pointers.reduce((x, { clientX }) => x + clientX, 0) / pointers.length,\n y: pointers.reduce((y, { clientY }) => y + clientY, 0) / pointers.length,\n };\n\n // Movement of the center point\n const deltaCenterPoint = previousCenterPoint && {\n left: previousCenterPoint.x - centerPoint.x,\n top: previousCenterPoint.y - centerPoint.y,\n };\n\n // Pan X & Y\n if (deltaCenterPoint) {\n // Apply movement of the center point to the scroll\n scrollArea.scrollBy({\n top: deltaCenterPoint.top / 2,\n left: deltaCenterPoint.left / 2,\n });\n }\n\n // Pinch to zoom\n if (pointers.length === 2) {\n const [pointer1, pointer2] = pointers;\n const distance = Math.hypot(pointer2.clientX - pointer1.clientX, pointer2.clientY - pointer1.clientY);\n\n if (prevDistance && deltaCenterPoint) {\n const delta = prevDistance - distance;\n const absDelta = Math.abs(delta);\n\n // Zoom only if we are \"pinching\" more than we are moving the pointers\n if (absDelta > Math.abs(deltaCenterPoint.left) && absDelta > Math.abs(deltaCenterPoint.top)) {\n // Update scale on next frame (focused on the center point between the two pointers)\n const newScale = Math.exp(-delta / 100);\n updateScaleOnNextFrame(newScale, centerPoint);\n }\n }\n\n prevDistance = distance;\n }\n\n previousCenterPoint = centerPoint;\n }\n function onPointerUp(event: PointerEvent) {\n prevDistance = null;\n previousCenterPoint = null;\n delete activePointers[event.pointerId];\n }\n\n scrollArea.addEventListener('wheel', onWheel, { passive: false });\n const isMultiTouch = navigator.maxTouchPoints >= 2;\n if (isMultiTouch) {\n scrollArea.addEventListener('pointerdown', onPointerDown);\n scrollArea.addEventListener('pointermove', onPointerMove);\n scrollArea.addEventListener('pointerup', onPointerUp);\n }\n return () => {\n scrollArea.removeEventListener('wheel', onWheel);\n if (isMultiTouch) {\n scrollArea.removeEventListener('pointerdown', onPointerDown);\n scrollArea.removeEventListener('pointermove', onPointerMove);\n scrollArea.removeEventListener('pointerup', onPointerUp);\n }\n };\n }, [animateScroll, onScaleChange, scrollAreaRef]);\n\n return isPointerZooming;\n}\n","import React from 'react';\nimport type { Point, RectSize } from '@lumx/react/utils/type';\n\n/** Maintains the scroll position centered relative to the original scroll area's dimensions when the content scales. */\nexport function useAnimateScroll(scrollAreaRef: React.RefObject<HTMLDivElement>) {\n return React.useMemo(() => {\n let animationFrame: number | null = null;\n\n return function animate(centerPoint?: Point, initialScrollAreaSize?: RectSize) {\n const scrollArea = scrollAreaRef.current as HTMLDivElement;\n if (!scrollArea) {\n return;\n }\n\n // Cancel previously running animation\n if (animationFrame) cancelAnimationFrame(animationFrame);\n\n // Center on the given point or else on the scroll area visual center\n const clientHeightRatio = centerPoint?.y ? centerPoint.y / scrollArea.clientHeight : 0.5;\n const clientWidthRatio = centerPoint?.x ? centerPoint.x / scrollArea.clientWidth : 0.5;\n\n const initialScrollHeight = initialScrollAreaSize?.height || scrollArea.scrollHeight;\n const initialScrollWidth = initialScrollAreaSize?.width || scrollArea.scrollWidth;\n\n const heightCenter = scrollArea.scrollTop + scrollArea.clientHeight * clientHeightRatio;\n const heightRatio = heightCenter / initialScrollHeight;\n\n const widthCenter = scrollArea.scrollLeft + scrollArea.clientWidth * clientWidthRatio;\n const widthRatio = widthCenter / initialScrollWidth;\n\n let prevScrollHeight = 0;\n let prevScrollWidth = 0;\n\n function nextFrame() {\n const { scrollHeight, scrollWidth, clientHeight, clientWidth } = scrollArea;\n\n // Scroll area stopped expanding => stop animation\n if (scrollHeight === prevScrollHeight && scrollWidth === prevScrollWidth) {\n animationFrame = null;\n return;\n }\n\n // Compute next scroll position\n const top = heightRatio * scrollHeight - clientHeight * clientHeightRatio;\n const left = widthRatio * scrollWidth - clientWidth * clientWidthRatio;\n\n scrollArea.scrollTo({ top, left });\n prevScrollHeight = scrollHeight;\n prevScrollWidth = scrollWidth;\n animationFrame = requestAnimationFrame(nextFrame);\n }\n animationFrame = requestAnimationFrame(nextFrame);\n };\n }, [scrollAreaRef]);\n}\n","import React from 'react';\n\nimport { SlideshowItem, Thumbnail } from '@lumx/react';\nimport { useMergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { useSizeOnWindowResize } from '@lumx/react/hooks/useSizeOnWindowResize';\nimport { useImageSize } from '@lumx/react/hooks/useImageSize';\nimport { isReducedMotion } from '@lumx/react/utils/browser/isReducedMotion';\nimport { isEqual } from '@lumx/react/utils/object/isEqual';\n\nimport { CLASSNAME } from '../constants';\nimport { usePointerZoom } from './usePointerZoom';\nimport { useAnimateScroll } from './useAnimateScroll';\nimport type { ImageProps } from '../types';\n\nexport interface ImageSlideProps {\n image: ImageProps;\n isActive?: boolean;\n scale?: number;\n onScaleChange?: (value: number) => void;\n}\n\n/** Internal image slide component for ImageLightbox */\nexport const ImageSlide = React.memo((props: ImageSlideProps) => {\n const {\n isActive,\n scale,\n onScaleChange,\n image: { image, imgRef: propImgRef, imgProps, alt, loadingPlaceholderImageRef },\n } = props;\n\n // Get scroll area size\n const scrollAreaRef = React.useRef<HTMLDivElement>(null);\n const [scrollAreaSize, updateSize] = useSizeOnWindowResize(scrollAreaRef);\n React.useEffect(() => {\n // Update size when active\n if (isActive) updateSize();\n }, [isActive, updateSize]);\n\n // Get image size\n const imgRef = React.useRef<HTMLImageElement>(null);\n const imageSize = useImageSize(imgRef, () => {\n const width = Number.parseInt(imgProps?.width as any, 10);\n const height = Number.parseInt(imgProps?.height as any, 10);\n return width && height ? { width, height } : null;\n });\n\n // Calculate new image size with scale\n const scaledImageSize = React.useMemo(() => {\n if (!scrollAreaSize || !imageSize) {\n return null;\n }\n const horizontalScale = scrollAreaSize.width / imageSize.width;\n const verticalScale = scrollAreaSize.height / imageSize.height;\n const baseScale = Math.min(1, Math.min(horizontalScale, verticalScale));\n return {\n width: imageSize.width * baseScale * (scale ?? 1),\n height: imageSize.height * baseScale * (scale ?? 1),\n };\n }, [scrollAreaSize, imageSize, scale]);\n\n // Animate scroll to preserve the center of the current visible window in the scroll area\n const animateScroll = useAnimateScroll(scrollAreaRef);\n\n // Zoom via mouse wheel or multi-touch pinch zoom\n const isPointerZooming = usePointerZoom(scrollAreaRef, onScaleChange, animateScroll);\n\n // Animate scroll on scale change\n React.useLayoutEffect(() => {\n if (scale && !isPointerZooming) {\n animateScroll();\n }\n }, [isPointerZooming, scale, animateScroll]);\n\n const isScrollable =\n scaledImageSize &&\n scrollAreaSize &&\n (scaledImageSize.width > scrollAreaSize.width || scaledImageSize.height > scrollAreaSize.height);\n\n return (\n <SlideshowItem\n ref={scrollAreaRef}\n // Make it accessible to keyboard nav when the zone is scrollable\n tabIndex={isScrollable ? 0 : undefined}\n className={`${CLASSNAME}__image-slide`}\n >\n <Thumbnail\n imgRef={useMergeRefs(imgRef, propImgRef)}\n image={image}\n alt={alt}\n className={`${CLASSNAME}__thumbnail`}\n imgProps={{\n ...imgProps,\n style: {\n ...imgProps?.style,\n ...(scaledImageSize || {\n maxHeight: scrollAreaSize?.height,\n maxWidth: scrollAreaSize?.width,\n }),\n // Only animate when scale is set, and we are not pointer zooming and the user does not prefer reduced motion\n transition: scale && !isPointerZooming && !isReducedMotion() ? 'all 250ms' : undefined,\n },\n }}\n loadingPlaceholderImageRef={loadingPlaceholderImageRef}\n />\n </SlideshowItem>\n );\n}, isEqual);\n","import React from 'react';\n\nimport { mdiMagnifyMinusOutline, mdiMagnifyPlusOutline } from '@lumx/icons';\nimport { FlexBox, IconButton, Slides, SlideshowControls } from '@lumx/react';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\n\nimport memoize from 'lodash/memoize';\nimport { ImageCaption } from '../../image-block/ImageCaption';\nimport { CLASSNAME } from '../constants';\nimport type { ImagesProps, InheritedSlideShowProps, ZoomButtonProps } from '../types';\nimport { ImageSlide } from './ImageSlide';\n\nexport interface ImageSlideshowProps extends InheritedSlideShowProps, ZoomButtonProps, ImagesProps {\n currentPaginationItemRef?: React.Ref<HTMLButtonElement>;\n footerRef?: React.Ref<HTMLDivElement>;\n}\n\n/** Internal image slideshow component for ImageLightbox */\nexport const ImageSlideshow: React.FC<ImageSlideshowProps> = ({\n activeImageIndex,\n images,\n slideGroupLabel,\n zoomInButtonProps,\n zoomOutButtonProps,\n slideshowControlsProps,\n currentPaginationItemRef,\n footerRef,\n activeImageRef,\n}) => {\n const {\n activeIndex,\n slideshowId,\n setSlideshow,\n slideshowSlidesId,\n slidesCount,\n onNextClick,\n onPaginationClick,\n onPreviousClick,\n toggleAutoPlay,\n } = SlideshowControls.useSlideshowControls({\n itemsCount: images.length,\n activeIndex: activeImageIndex,\n });\n\n // Image metadata (caption)\n const title = images[activeIndex]?.title;\n const description = images[activeIndex]?.description;\n const tags = images[activeIndex]?.tags;\n const metadata =\n title || description || tags ? (\n <ImageCaption as=\"div\" title={title} description={description} tags={tags} align=\"center\" />\n ) : null;\n\n // Slideshow controls\n const slideShowControls =\n slidesCount > 1 && slideshowControlsProps ? (\n <SlideshowControls\n activeIndex={activeIndex}\n slidesCount={slidesCount}\n onNextClick={onNextClick}\n onPreviousClick={onPreviousClick}\n onPaginationClick={onPaginationClick}\n {...slideshowControlsProps}\n paginationItemProps={(index: number) => {\n const props = slideshowControlsProps?.paginationItemProps?.(index) || {};\n return {\n ...props,\n ref: mergeRefs(\n (props as any)?.ref,\n // Focus the active pagination item once on mount\n activeIndex === index ? currentPaginationItemRef : undefined,\n ),\n };\n }}\n />\n ) : null;\n\n // Zoom controls\n const [scale, setScale] = React.useState<number | undefined>(undefined);\n const zoomEnabled = zoomInButtonProps && zoomOutButtonProps;\n const onScaleChange = React.useMemo(() => {\n if (!zoomEnabled) return undefined;\n return (newScale: number) => {\n setScale((prevScale = 1) => Math.max(1, newScale * prevScale));\n };\n }, [zoomEnabled]);\n const zoomIn = React.useCallback(() => onScaleChange?.(1.5), [onScaleChange]);\n const zoomOut = React.useCallback(() => onScaleChange?.(0.5), [onScaleChange]);\n React.useEffect(() => {\n // Reset scale on slide change\n if (typeof activeIndex === 'number') setScale(undefined);\n }, [activeIndex]);\n const zoomControls = zoomEnabled && (\n <>\n <IconButton {...zoomInButtonProps} emphasis=\"low\" icon={mdiMagnifyPlusOutline} onClick={zoomIn} />\n <IconButton\n {...zoomOutButtonProps}\n emphasis=\"low\"\n isDisabled={!scale || scale <= 1}\n icon={mdiMagnifyMinusOutline}\n onClick={zoomOut}\n />\n </>\n );\n\n const getImgRef = React.useMemo(\n () =>\n memoize(\n (index: number, isActive: boolean) => {\n return mergeRefs(images?.[index].imgRef, isActive ? activeImageRef : undefined);\n },\n // memoize based on both arguments\n (...args) => args.join(),\n ),\n [images, activeImageRef],\n );\n\n return (\n <>\n <Slides\n activeIndex={activeIndex}\n slideGroupLabel={slideGroupLabel}\n fillHeight\n id={slideshowId}\n ref={setSlideshow}\n slidesId={slideshowSlidesId}\n toggleAutoPlay={toggleAutoPlay}\n >\n {images.map(({ image, imgRef, ...imageProps }, index) => {\n const isActive = index === activeIndex;\n return (\n <ImageSlide\n isActive={isActive}\n key={image}\n image={{\n ...imageProps,\n image,\n imgRef: getImgRef(index, isActive),\n }}\n scale={isActive ? scale : undefined}\n onScaleChange={onScaleChange}\n />\n );\n })}\n </Slides>\n {(metadata || slideShowControls || zoomControls) && (\n <FlexBox\n ref={footerRef}\n className={`${CLASSNAME}__footer`}\n orientation=\"vertical\"\n vAlign=\"center\"\n gap=\"big\"\n >\n {metadata}\n\n <FlexBox className={`${CLASSNAME}__footer-actions`} orientation=\"horizontal\" gap=\"regular\">\n {slideShowControls}\n {zoomControls}\n </FlexBox>\n </FlexBox>\n )}\n </>\n );\n};\n","import { MaybeElementOrRef } from '@lumx/react/utils/type';\n\n/** Unref a react ref or element */\nexport function unref(maybeElement: MaybeElementOrRef<HTMLElement>) {\n if (maybeElement instanceof HTMLElement) return maybeElement;\n return maybeElement?.current;\n}\n","import ReactDOM from 'react-dom';\n\nimport { MaybeElementOrRef } from '@lumx/react/utils/type';\n\nimport { unref } from '../../react/unref';\nimport { isReducedMotion } from '../isReducedMotion';\n\nfunction setupViewTransitionName(elementRef: MaybeElementOrRef<HTMLElement>, name: string) {\n let originalName: string | null = null;\n return {\n set() {\n const element = unref(elementRef);\n if (!element) return;\n originalName = element.style.viewTransitionName;\n element.style.viewTransitionName = name;\n },\n unset() {\n const element = unref(elementRef);\n if (!element || originalName === null) return;\n element.style.viewTransitionName = originalName;\n },\n };\n}\n\n/**\n * Wrapper around the `document.startViewTransition` handling browser incompatibilities, react DOM flush and\n * user preference.\n *\n * @param changes callback containing the changes to apply within the view transition.\n * @param setViewTransitionName set the `viewTransitionName` style on a `source` & `target` to morph these elements.\n */\nexport async function startViewTransition({\n changes,\n viewTransitionName,\n}: {\n changes: () => void;\n viewTransitionName: {\n source: MaybeElementOrRef<HTMLElement>;\n target: MaybeElementOrRef<HTMLElement>;\n name: string;\n };\n}) {\n const start = (document as any)?.startViewTransition?.bind(document);\n const prefersReducedMotion = isReducedMotion();\n const { flushSync } = ReactDOM as any;\n if (prefersReducedMotion || !start || !flushSync || !viewTransitionName?.source || !viewTransitionName?.target) {\n // Skip, apply changes without a transition\n changes();\n return;\n }\n\n // Setup set/unset transition name on source & target\n const sourceTransitionName = setupViewTransitionName(viewTransitionName.source, viewTransitionName.name);\n const targetTransitionName = setupViewTransitionName(viewTransitionName.target, viewTransitionName.name);\n\n sourceTransitionName.set();\n\n // Start view transition, apply changes & flush to DOM\n await start(() => {\n sourceTransitionName.unset();\n\n flushSync(changes);\n\n targetTransitionName.set();\n }).updateCallbackDone;\n\n targetTransitionName.unset();\n}\n","/** Find image in element including the element */\nexport const findImage = (element: HTMLElement | null): HTMLImageElement | null =>\n element?.matches('img') ? (element as HTMLImageElement) : element?.querySelector('img') || null;\n","import React from 'react';\n\nimport memoize from 'lodash/memoize';\n\nimport { startViewTransition } from '@lumx/react/utils/browser/DOM/startViewTransition';\nimport { findImage } from '@lumx/react/utils/browser/DOM/findImage';\n\nimport type { ImageLightboxProps } from './types';\nimport { CLASSNAME } from './constants';\n\n/** Subset of the ImageLightboxProps managed by the useImageLightbox hook */\ntype ManagedProps = Pick<\n ImageLightboxProps,\n 'isOpen' | 'images' | 'parentElement' | 'activeImageRef' | 'onClose' | 'activeImageIndex'\n>;\n\nconst EMPTY_PROPS: ManagedProps = { isOpen: false, images: [], parentElement: React.createRef() };\n\ntype TriggerOptions = Pick<ImageLightboxProps, 'activeImageIndex'>;\n\n/**\n * Set up an ImageLightbox with images and triggers.\n *\n * - Associate a trigger with the lightbox to properly focus the trigger on close\n * - Associate a trigger with an image to display on open\n * - Automatically provide a view transition between an image trigger and the displayed image on open & close\n *\n * @param props Images to display in the image lightbox\n */\nexport function useImageLightbox<P extends Partial<ImageLightboxProps>>(\n props: P,\n): {\n /**\n * Generates trigger props\n * @param index Provide an index to choose which image to display when the image lightbox opens.\n * */\n getTriggerProps: (options?: TriggerOptions) => { onClick: React.MouseEventHandler; ref: React.Ref<any> };\n /** Props to forward to the ImageLightbox */\n imageLightboxProps: ManagedProps & P;\n} {\n const propsRef = React.useRef(props);\n\n React.useEffect(() => {\n propsRef.current = props;\n }, [props]);\n\n // Keep reference for each image elements\n const imageRefsRef = React.useRef<Array<React.RefObject<HTMLImageElement>>>([]);\n\n const currentImageRef = React.useRef<HTMLImageElement>(null);\n const [imageLightboxProps, setImageLightboxProps] = React.useState(\n () => ({ ...EMPTY_PROPS, ...props }) as ManagedProps & P,\n );\n\n const getTriggerProps = React.useMemo(() => {\n const triggerImageRefs: Record<number, React.RefObject<HTMLImageElement>> = {};\n\n async function close() {\n const currentImage = currentImageRef.current;\n if (!currentImage) {\n return;\n }\n const currentIndex = imageRefsRef.current.findIndex(\n (imageRef) => imageRef.current === currentImage,\n ) as number;\n\n await startViewTransition({\n changes() {\n // Close lightbox\n setImageLightboxProps((prevProps) => ({ ...prevProps, isOpen: false }));\n },\n // Morph from the image in lightbox to the image in trigger\n viewTransitionName: {\n source: currentImageRef,\n target: triggerImageRefs[currentIndex],\n name: CLASSNAME,\n },\n });\n }\n\n async function open(triggerElement: HTMLElement, { activeImageIndex }: TriggerOptions = {}) {\n // If we find an image inside the trigger, animate it in transition with the opening image\n const triggerImage = triggerImageRefs[activeImageIndex as any]?.current || findImage(triggerElement);\n\n // Inject refs to improve transition and loading style\n const images = propsRef.current?.images?.map((image, idx) => {\n // Get or create image reference\n let imgRef = imageRefsRef.current[idx];\n if (!imgRef) {\n imgRef = React.createRef();\n imageRefsRef.current[idx] = imgRef;\n }\n\n // Try to use the trigger image as the loading placeholder\n const loadingPlaceholderImageRef =\n triggerImage && idx === activeImageIndex ? { current: triggerImage } : undefined;\n\n return { loadingPlaceholderImageRef, ...image, imgRef };\n });\n\n await startViewTransition({\n changes: () => {\n // Open lightbox with setup props\n setImageLightboxProps((prevProps) => ({\n ...prevProps,\n ...propsRef.current,\n activeImageRef: currentImageRef,\n parentElement: { current: triggerElement },\n isOpen: true,\n onClose: () => {\n close();\n propsRef.current?.onClose?.();\n },\n images,\n activeImageIndex: activeImageIndex || 0,\n }));\n },\n // Morph from the image in trigger to the image in lightbox\n viewTransitionName: {\n source: triggerImage,\n target: currentImageRef,\n name: CLASSNAME,\n },\n });\n }\n\n return memoize((options?: TriggerOptions) => ({\n ref(element: HTMLElement | null) {\n // Track trigger image ref if any\n if (options?.activeImageIndex !== undefined && element) {\n triggerImageRefs[options.activeImageIndex] = { current: findImage(element) };\n }\n },\n onClick(e: React.MouseEvent) {\n open(e.target as HTMLElement, options);\n },\n }));\n }, []);\n\n return { getTriggerProps, imageLightboxProps };\n}\n","import React from 'react';\n\nimport classNames from 'classnames';\n\nimport { Lightbox, ThemeProvider } from '@lumx/react';\nimport { ClickAwayProvider } from '@lumx/react/utils';\nimport { useMergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { ImageSlideshow } from './internal/ImageSlideshow';\nimport { useImageLightbox } from './useImageLightbox';\nimport type { ImageLightboxProps } from './types';\nimport { CLASSNAME, COMPONENT_NAME } from './constants';\n\nconst Inner = forwardRef<ImageLightboxProps, HTMLDivElement>((props, ref) => {\n const {\n className,\n isOpen,\n closeButtonProps,\n onClose,\n parentElement,\n activeImageIndex,\n slideshowControlsProps,\n slideGroupLabel,\n images,\n zoomOutButtonProps,\n zoomInButtonProps,\n activeImageRef: propImageRef,\n ...forwardedProps\n } = props;\n const currentPaginationItemRef = React.useRef(null);\n const footerRef = React.useRef(null);\n const imageRef = React.useRef(null);\n const clickAwayChildrenRefs = React.useRef([imageRef, footerRef]);\n\n const onClickAway = React.useCallback(\n (evt: Event) => {\n const targetElement = evt.target;\n if (!(targetElement instanceof HTMLElement) || !(evt instanceof MouseEvent)) return;\n\n // Skip click away if clicking on the scrollbar\n if (targetElement.clientWidth < evt.clientX || targetElement.clientHeight < evt.clientY) return;\n\n onClose?.();\n },\n [onClose],\n );\n\n return (\n <Lightbox\n ref={ref}\n className={classNames(className, CLASSNAME)}\n parentElement={parentElement}\n isOpen={isOpen}\n onClose={onClose}\n closeButtonProps={closeButtonProps}\n focusElement={currentPaginationItemRef}\n {...forwardedProps}\n // Disable the close on click away as we want a custom one here\n preventAutoClose\n >\n <ClickAwayProvider childrenRefs={clickAwayChildrenRefs} callback={onClickAway}>\n <ThemeProvider value=\"dark\">\n <ImageSlideshow\n activeImageIndex={activeImageIndex}\n slideGroupLabel={slideGroupLabel}\n slideshowControlsProps={slideshowControlsProps}\n images={images}\n zoomInButtonProps={zoomInButtonProps}\n zoomOutButtonProps={zoomOutButtonProps}\n footerRef={footerRef}\n activeImageRef={useMergeRefs(propImageRef, imageRef)}\n currentPaginationItemRef={currentPaginationItemRef}\n />\n </ThemeProvider>\n </ClickAwayProvider>\n </Lightbox>\n );\n});\nInner.displayName = COMPONENT_NAME;\nInner.className = CLASSNAME;\n\n/**\n * ImageLightbox component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const ImageLightbox = Object.assign(Inner, { useImageLightbox });\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","useSizeOnWindowResize","elementRef","size","setSize","React","useState","updateSize","useMemo","throttle","newSize","current","getBoundingClientRect","useEffect","window","addEventListener","removeEventListener","useImageSize","imgRef","getInitialSize","imageSize","setImageSize","img","undefined","onLoad","width","naturalWidth","height","naturalHeight","isEqual","obj1","obj2","keys1","Object","keys","keys2","length","every","key1","usePointerZoom","scrollAreaRef","onScaleChange","animateScroll","isPointerZooming","setPointerZooming","scrollArea","animationFrame","zoomStateTimeoutId","updateScaleOnNextFrame","newScale","mousePosition","cancelAnimationFrame","clearTimeout","nextFrame","setTimeout","requestAnimationFrame","scrollWidth","scrollHeight","onWheel","event","ctrlKey","preventDefault","Math","exp","deltaY","x","clientX","y","clientY","activePointers","prevDistance","previousCenterPoint","onPointerDown","pointerId","onPointerMove","pointers","values","centerPoint","reduce","deltaCenterPoint","left","top","scrollBy","pointer1","pointer2","distance","hypot","delta","absDelta","abs","onPointerUp","passive","isMultiTouch","navigator","maxTouchPoints","useAnimateScroll","animate","initialScrollAreaSize","clientHeightRatio","clientHeight","clientWidthRatio","clientWidth","initialScrollHeight","initialScrollWidth","heightCenter","scrollTop","heightRatio","widthCenter","scrollLeft","widthRatio","prevScrollHeight","prevScrollWidth","scrollTo","ImageSlide","memo","props","isActive","scale","image","propImgRef","imgProps","alt","loadingPlaceholderImageRef","useRef","scrollAreaSize","Number","parseInt","scaledImageSize","horizontalScale","verticalScale","baseScale","min","useLayoutEffect","isScrollable","_jsx","SlideshowItem","ref","tabIndex","className","children","Thumbnail","useMergeRefs","style","maxHeight","maxWidth","transition","isReducedMotion","ImageSlideshow","activeImageIndex","images","slideGroupLabel","zoomInButtonProps","zoomOutButtonProps","slideshowControlsProps","currentPaginationItemRef","footerRef","activeImageRef","activeIndex","slideshowId","setSlideshow","slideshowSlidesId","slidesCount","onNextClick","onPaginationClick","onPreviousClick","toggleAutoPlay","SlideshowControls","useSlideshowControls","itemsCount","title","description","tags","metadata","ImageCaption","as","align","slideShowControls","paginationItemProps","index","mergeRefs","setScale","zoomEnabled","prevScale","max","zoomIn","useCallback","zoomOut","zoomControls","_jsxs","_Fragment","IconButton","emphasis","icon","mdiMagnifyPlusOutline","onClick","isDisabled","mdiMagnifyMinusOutline","getImgRef","memoize","args","join","Slides","fillHeight","id","slidesId","map","imageProps","FlexBox","orientation","vAlign","gap","unref","maybeElement","HTMLElement","setupViewTransitionName","name","originalName","set","element","viewTransitionName","unset","startViewTransition","changes","start","document","bind","prefersReducedMotion","flushSync","ReactDOM","source","target","sourceTransitionName","targetTransitionName","updateCallbackDone","findImage","matches","querySelector","EMPTY_PROPS","isOpen","parentElement","createRef","useImageLightbox","propsRef","imageRefsRef","currentImageRef","imageLightboxProps","setImageLightboxProps","getTriggerProps","triggerImageRefs","close","currentImage","currentIndex","findIndex","imageRef","prevProps","open","triggerElement","triggerImage","idx","onClose","options","e","Inner","forwardRef","closeButtonProps","propImageRef","forwardedProps","clickAwayChildrenRefs","onClickAway","evt","targetElement","MouseEvent","Lightbox","classNames","focusElement","preventAutoClose","ClickAwayProvider","childrenRefs","callback","ThemeProvider","value","displayName","ImageLightbox","assign"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACO,MAAMA,cAAc,GAAG,eAAe,CAAA;;AAE7C;AACA;AACA;AACO,MAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAc,CAAC;;ACLzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,qBAAqBA,CAACC,UAAwC,EAAiC;EAC3G,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAkB,IAAI,CAAC,CAAA;EAC7D,MAAMC,UAAU,GAAGF,cAAK,CAACG,OAAO,CAC5B,MACIC,QAAQ,CAAC,MAAM;IACX,MAAMC,OAAO,GAAGR,UAAU,CAACS,OAAO,EAAEC,qBAAqB,EAAE,CAAA;AAC3D,IAAA,IAAIF,OAAO,EAAEN,OAAO,CAACM,OAAO,CAAC,CAAA;AACjC,GAAC,EAAE,EAAE,CAAC,EACV,CAACR,UAAU,CACf,CAAC,CAAA;EACDG,cAAK,CAACQ,SAAS,CAAC,MAAM;AAClBN,IAAAA,UAAU,EAAE,CAAA;AACZO,IAAAA,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAER,UAAU,CAAC,CAAA;IAC7C,OAAO,MAAMO,MAAM,CAACE,mBAAmB,CAAC,QAAQ,EAAET,UAAU,CAAC,CAAA;AACjE,GAAC,EAAE,CAACA,UAAU,CAAC,CAAC,CAAA;AAChB,EAAA,OAAO,CAACJ,IAAI,EAAEI,UAAU,CAAC,CAAA;AAC7B;;AC1BA;AACO,SAASU,YAAYA,CAACC,MAAyC,EAAEC,cAAsC,EAAE;AAC5G,EAAA,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGhB,cAAK,CAACC,QAAQ,CAAkBa,cAAc,IAAI,IAAI,CAAC,CAAA;EACzFd,cAAK,CAACQ,SAAS,CAAC,MAAM;IAClB,MAAM;AAAEF,MAAAA,OAAO,EAAEW,GAAAA;AAAI,KAAC,GAAGJ,MAAM,CAAA;IAC/B,IAAI,CAACI,GAAG,EAAE;AACN,MAAA,OAAOC,SAAS,CAAA;AACpB,KAAA;AACA,IAAA,MAAMC,MAAM,GAAGA,MAAMH,YAAY,CAAC;MAAEI,KAAK,EAAEH,GAAG,CAACI,YAAY;MAAEC,MAAM,EAAEL,GAAG,CAACM,aAAAA;AAAc,KAAC,CAAC,CAAA;AACzFN,IAAAA,GAAG,CAACP,gBAAgB,CAAC,MAAM,EAAES,MAAM,CAAC,CAAA;IACpC,OAAO,MAAMF,GAAG,CAACN,mBAAmB,CAAC,MAAM,EAAEQ,MAAM,CAAC,CAAA;AACxD,GAAC,EAAE,CAACN,MAAM,CAAC,CAAC,CAAA;AACZ,EAAA,OAAOE,SAAS,CAAA;AACpB;;AChBA;AACO,SAASS,OAAOA,CAACC,IAAS,EAAEC,IAAS,EAAW;AACnD,EAAA,IAAID,IAAI,KAAKC,IAAI,EAAE,OAAO,IAAI,CAAA;EAC9B,IAAI,OAAOD,IAAI,KAAK,QAAQ,IAAI,OAAOC,IAAI,KAAK,QAAQ,EAAE;AACtD,IAAA,MAAMC,KAAK,GAAGC,MAAM,CAACC,IAAI,CAACJ,IAAI,CAAC,CAAA;AAC/B,IAAA,MAAMK,KAAK,GAAGF,MAAM,CAACC,IAAI,CAACH,IAAI,CAAC,CAAA;IAC/B,IAAIC,KAAK,CAACI,MAAM,KAAKD,KAAK,CAACC,MAAM,EAAE,OAAO,KAAK,CAAA;AAC/C,IAAA,OAAOJ,KAAK,CAACK,KAAK,CAAEC,IAAI,IAAKT,OAAO,CAACC,IAAI,CAACQ,IAAI,CAAC,EAAEP,IAAI,CAACO,IAAI,CAAC,CAAC,CAAC,CAAA;AACjE,GAAA;AACA,EAAA,OAAO,KAAK,CAAA;AAChB;;ACNA;AACA;AACA;AACO,SAASC,cAAcA,CAC1BC,aAA8C,EAC9CC,aAAoD,EACpDC,aAAkD,EACpD;EACE,MAAM,CAACC,gBAAgB,EAAEC,iBAAiB,CAAC,GAAGvC,cAAK,CAACC,QAAQ,CAAC,KAAK,CAAC,CAAA;EACnED,cAAK,CAACQ,SAAS,CAAC,MAAM;AAClB,IAAA,MAAMgC,UAAU,GAAGL,aAAa,CAAC7B,OAAyB,CAAA;AAC1D,IAAA,IAAI,CAACkC,UAAU,IAAI,CAACJ,aAAa,EAAE;AAC/B,MAAA,OAAOlB,SAAS,CAAA;AACpB,KAAA;AAEA,IAAA,IAAIuB,cAA6B,CAAA;AACjC,IAAA,IAAIC,kBAAwD,CAAA;AAE5D,IAAA,SAASC,sBAAsBA,CAACC,QAAgB,EAAEC,aAAoB,EAAQ;AAC1E;AACA,MAAA,IAAIJ,cAAc,EAAEK,oBAAoB,CAACL,cAAc,CAAC,CAAA;;AAExD;AACA,MAAA,IAAIC,kBAAkB,EAAEK,YAAY,CAACL,kBAAkB,CAAC,CAAA;MAExD,SAASM,SAASA,GAAG;QACjBT,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACvBH,aAAa,GAAGQ,QAAQ,CAAC,CAAA;AAEzBH,QAAAA,cAAc,GAAG,IAAI,CAAA;AACrB;QACAC,kBAAkB,GAAGO,UAAU,CAAC,MAAMV,iBAAiB,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAA;AACxE,OAAA;AACAE,MAAAA,cAAc,GAAGS,qBAAqB,CAACF,SAAS,CAAC,CAAA;;AAEjD;MACAX,aAAa,CAACQ,aAAa,EAAE;QACzBzB,KAAK,EAAEoB,UAAU,CAACW,WAAW;QAC7B7B,MAAM,EAAEkB,UAAU,CAACY,YAAAA;AACvB,OAAC,CAAC,CAAA;AACN,KAAA;IAEA,SAASC,OAAOA,CAACC,KAAiB,EAAE;AAChC,MAAA,IAAI,CAACA,KAAK,CAACC,OAAO,EAAE;AAChB,QAAA,OAAA;AACJ,OAAA;MACAD,KAAK,CAACE,cAAc,EAAE,CAAA;AACtB,MAAA,MAAMZ,QAAQ,GAAGa,IAAI,CAACC,GAAG,CAAC,CAACJ,KAAK,CAACK,MAAM,GAAG,EAAE,CAAC,CAAA;;AAE7C;MACAhB,sBAAsB,CAACC,QAAQ,EAAE;QAC7BgB,CAAC,EAAEN,KAAK,CAACO,OAAO;QAChBC,CAAC,EAAER,KAAK,CAACS,OAAAA;AACb,OAAC,CAAC,CAAA;AACN,KAAA;IAEA,MAAMC,cAA+D,GAAG,EAAE,CAAA;IAC1E,IAAIC,YAA2B,GAAG,IAAI,CAAA;IACtC,IAAIC,mBAAiC,GAAG,IAAI,CAAA;IAE5C,SAASC,aAAaA,CAACb,KAAmB,EAAE;AACxCU,MAAAA,cAAc,CAACV,KAAK,CAACc,SAAS,CAAC,GAAGd,KAAK,CAAA;AAC3C,KAAA;IACA,SAASe,aAAaA,CAACf,KAAmB,EAAE;AACxC;AACA,MAAA,IAAIU,cAAc,CAACV,KAAK,CAACc,SAAS,CAAC,EAAE;AACjCJ,QAAAA,cAAc,CAACV,KAAK,CAACc,SAAS,CAAC,GAAGd,KAAK,CAAA;AAC3C,OAAA;AAEA,MAAA,MAAMgB,QAAQ,GAAG1C,MAAM,CAAC2C,MAAM,CAACP,cAAc,CAAC,CAAA;;AAE9C;MACA,IAAIM,QAAQ,CAAC,CAAC,CAAC,EAAEF,SAAS,KAAKd,KAAK,CAACc,SAAS,EAAE;AAC5C,QAAA,OAAA;AACJ,OAAA;;AAEA;AACA,MAAA,MAAMI,WAAkB,GAAG;AACvBZ,QAAAA,CAAC,EAAEU,QAAQ,CAACG,MAAM,CAAC,CAACb,CAAC,EAAE;AAAEC,UAAAA,OAAAA;SAAS,KAAKD,CAAC,GAAGC,OAAO,EAAE,CAAC,CAAC,GAAGS,QAAQ,CAACvC,MAAM;AACxE+B,QAAAA,CAAC,EAAEQ,QAAQ,CAACG,MAAM,CAAC,CAACX,CAAC,EAAE;AAAEC,UAAAA,OAAAA;SAAS,KAAKD,CAAC,GAAGC,OAAO,EAAE,CAAC,CAAC,GAAGO,QAAQ,CAACvC,MAAAA;OACrE,CAAA;;AAED;MACA,MAAM2C,gBAAgB,GAAGR,mBAAmB,IAAI;AAC5CS,QAAAA,IAAI,EAAET,mBAAmB,CAACN,CAAC,GAAGY,WAAW,CAACZ,CAAC;AAC3CgB,QAAAA,GAAG,EAAEV,mBAAmB,CAACJ,CAAC,GAAGU,WAAW,CAACV,CAAAA;OAC5C,CAAA;;AAED;AACA,MAAA,IAAIY,gBAAgB,EAAE;AAClB;QACAlC,UAAU,CAACqC,QAAQ,CAAC;AAChBD,UAAAA,GAAG,EAAEF,gBAAgB,CAACE,GAAG,GAAG,CAAC;AAC7BD,UAAAA,IAAI,EAAED,gBAAgB,CAACC,IAAI,GAAG,CAAA;AAClC,SAAC,CAAC,CAAA;AACN,OAAA;;AAEA;AACA,MAAA,IAAIL,QAAQ,CAACvC,MAAM,KAAK,CAAC,EAAE;AACvB,QAAA,MAAM,CAAC+C,QAAQ,EAAEC,QAAQ,CAAC,GAAGT,QAAQ,CAAA;QACrC,MAAMU,QAAQ,GAAGvB,IAAI,CAACwB,KAAK,CAACF,QAAQ,CAAClB,OAAO,GAAGiB,QAAQ,CAACjB,OAAO,EAAEkB,QAAQ,CAAChB,OAAO,GAAGe,QAAQ,CAACf,OAAO,CAAC,CAAA;QAErG,IAAIE,YAAY,IAAIS,gBAAgB,EAAE;AAClC,UAAA,MAAMQ,KAAK,GAAGjB,YAAY,GAAGe,QAAQ,CAAA;AACrC,UAAA,MAAMG,QAAQ,GAAG1B,IAAI,CAAC2B,GAAG,CAACF,KAAK,CAAC,CAAA;;AAEhC;UACA,IAAIC,QAAQ,GAAG1B,IAAI,CAAC2B,GAAG,CAACV,gBAAgB,CAACC,IAAI,CAAC,IAAIQ,QAAQ,GAAG1B,IAAI,CAAC2B,GAAG,CAACV,gBAAgB,CAACE,GAAG,CAAC,EAAE;AACzF;YACA,MAAMhC,QAAQ,GAAGa,IAAI,CAACC,GAAG,CAAC,CAACwB,KAAK,GAAG,GAAG,CAAC,CAAA;AACvCvC,YAAAA,sBAAsB,CAACC,QAAQ,EAAE4B,WAAW,CAAC,CAAA;AACjD,WAAA;AACJ,SAAA;AAEAP,QAAAA,YAAY,GAAGe,QAAQ,CAAA;AAC3B,OAAA;AAEAd,MAAAA,mBAAmB,GAAGM,WAAW,CAAA;AACrC,KAAA;IACA,SAASa,WAAWA,CAAC/B,KAAmB,EAAE;AACtCW,MAAAA,YAAY,GAAG,IAAI,CAAA;AACnBC,MAAAA,mBAAmB,GAAG,IAAI,CAAA;AAC1B,MAAA,OAAOF,cAAc,CAACV,KAAK,CAACc,SAAS,CAAC,CAAA;AAC1C,KAAA;AAEA5B,IAAAA,UAAU,CAAC9B,gBAAgB,CAAC,OAAO,EAAE2C,OAAO,EAAE;AAAEiC,MAAAA,OAAO,EAAE,KAAA;AAAM,KAAC,CAAC,CAAA;AACjE,IAAA,MAAMC,YAAY,GAAGC,SAAS,CAACC,cAAc,IAAI,CAAC,CAAA;AAClD,IAAA,IAAIF,YAAY,EAAE;AACd/C,MAAAA,UAAU,CAAC9B,gBAAgB,CAAC,aAAa,EAAEyD,aAAa,CAAC,CAAA;AACzD3B,MAAAA,UAAU,CAAC9B,gBAAgB,CAAC,aAAa,EAAE2D,aAAa,CAAC,CAAA;AACzD7B,MAAAA,UAAU,CAAC9B,gBAAgB,CAAC,WAAW,EAAE2E,WAAW,CAAC,CAAA;AACzD,KAAA;AACA,IAAA,OAAO,MAAM;AACT7C,MAAAA,UAAU,CAAC7B,mBAAmB,CAAC,OAAO,EAAE0C,OAAO,CAAC,CAAA;AAChD,MAAA,IAAIkC,YAAY,EAAE;AACd/C,QAAAA,UAAU,CAAC7B,mBAAmB,CAAC,aAAa,EAAEwD,aAAa,CAAC,CAAA;AAC5D3B,QAAAA,UAAU,CAAC7B,mBAAmB,CAAC,aAAa,EAAE0D,aAAa,CAAC,CAAA;AAC5D7B,QAAAA,UAAU,CAAC7B,mBAAmB,CAAC,WAAW,EAAE0E,WAAW,CAAC,CAAA;AAC5D,OAAA;KACH,CAAA;GACJ,EAAE,CAAChD,aAAa,EAAED,aAAa,EAAED,aAAa,CAAC,CAAC,CAAA;AAEjD,EAAA,OAAOG,gBAAgB,CAAA;AAC3B;;AChJA;AACO,SAASoD,gBAAgBA,CAACvD,aAA8C,EAAE;AAC7E,EAAA,OAAOnC,cAAK,CAACG,OAAO,CAAC,MAAM;IACvB,IAAIsC,cAA6B,GAAG,IAAI,CAAA;AAExC,IAAA,OAAO,SAASkD,OAAOA,CAACnB,WAAmB,EAAEoB,qBAAgC,EAAE;AAC3E,MAAA,MAAMpD,UAAU,GAAGL,aAAa,CAAC7B,OAAyB,CAAA;MAC1D,IAAI,CAACkC,UAAU,EAAE;AACb,QAAA,OAAA;AACJ,OAAA;;AAEA;AACA,MAAA,IAAIC,cAAc,EAAEK,oBAAoB,CAACL,cAAc,CAAC,CAAA;;AAExD;AACA,MAAA,MAAMoD,iBAAiB,GAAGrB,WAAW,EAAEV,CAAC,GAAGU,WAAW,CAACV,CAAC,GAAGtB,UAAU,CAACsD,YAAY,GAAG,GAAG,CAAA;AACxF,MAAA,MAAMC,gBAAgB,GAAGvB,WAAW,EAAEZ,CAAC,GAAGY,WAAW,CAACZ,CAAC,GAAGpB,UAAU,CAACwD,WAAW,GAAG,GAAG,CAAA;MAEtF,MAAMC,mBAAmB,GAAGL,qBAAqB,EAAEtE,MAAM,IAAIkB,UAAU,CAACY,YAAY,CAAA;MACpF,MAAM8C,kBAAkB,GAAGN,qBAAqB,EAAExE,KAAK,IAAIoB,UAAU,CAACW,WAAW,CAAA;MAEjF,MAAMgD,YAAY,GAAG3D,UAAU,CAAC4D,SAAS,GAAG5D,UAAU,CAACsD,YAAY,GAAGD,iBAAiB,CAAA;AACvF,MAAA,MAAMQ,WAAW,GAAGF,YAAY,GAAGF,mBAAmB,CAAA;MAEtD,MAAMK,WAAW,GAAG9D,UAAU,CAAC+D,UAAU,GAAG/D,UAAU,CAACwD,WAAW,GAAGD,gBAAgB,CAAA;AACrF,MAAA,MAAMS,UAAU,GAAGF,WAAW,GAAGJ,kBAAkB,CAAA;MAEnD,IAAIO,gBAAgB,GAAG,CAAC,CAAA;MACxB,IAAIC,eAAe,GAAG,CAAC,CAAA;MAEvB,SAAS1D,SAASA,GAAG;QACjB,MAAM;UAAEI,YAAY;UAAED,WAAW;UAAE2C,YAAY;AAAEE,UAAAA,WAAAA;AAAY,SAAC,GAAGxD,UAAU,CAAA;;AAE3E;AACA,QAAA,IAAIY,YAAY,KAAKqD,gBAAgB,IAAItD,WAAW,KAAKuD,eAAe,EAAE;AACtEjE,UAAAA,cAAc,GAAG,IAAI,CAAA;AACrB,UAAA,OAAA;AACJ,SAAA;;AAEA;QACA,MAAMmC,GAAG,GAAGyB,WAAW,GAAGjD,YAAY,GAAG0C,YAAY,GAAGD,iBAAiB,CAAA;QACzE,MAAMlB,IAAI,GAAG6B,UAAU,GAAGrD,WAAW,GAAG6C,WAAW,GAAGD,gBAAgB,CAAA;QAEtEvD,UAAU,CAACmE,QAAQ,CAAC;UAAE/B,GAAG;AAAED,UAAAA,IAAAA;AAAK,SAAC,CAAC,CAAA;AAClC8B,QAAAA,gBAAgB,GAAGrD,YAAY,CAAA;AAC/BsD,QAAAA,eAAe,GAAGvD,WAAW,CAAA;AAC7BV,QAAAA,cAAc,GAAGS,qBAAqB,CAACF,SAAS,CAAC,CAAA;AACrD,OAAA;AACAP,MAAAA,cAAc,GAAGS,qBAAqB,CAACF,SAAS,CAAC,CAAA;KACpD,CAAA;AACL,GAAC,EAAE,CAACb,aAAa,CAAC,CAAC,CAAA;AACvB;;ACjCA;AACO,MAAMyE,UAAU,gBAAG5G,cAAK,CAAC6G,IAAI,CAAEC,KAAsB,IAAK;EAC7D,MAAM;IACFC,QAAQ;IACRC,KAAK;IACL5E,aAAa;AACb6E,IAAAA,KAAK,EAAE;MAAEA,KAAK;AAAEpG,MAAAA,MAAM,EAAEqG,UAAU;MAAEC,QAAQ;MAAEC,GAAG;AAAEC,MAAAA,0BAAAA;AAA2B,KAAA;AAClF,GAAC,GAAGP,KAAK,CAAA;;AAET;AACA,EAAA,MAAM3E,aAAa,GAAGnC,cAAK,CAACsH,MAAM,CAAiB,IAAI,CAAC,CAAA;EACxD,MAAM,CAACC,cAAc,EAAErH,UAAU,CAAC,GAAGN,qBAAqB,CAACuC,aAAa,CAAC,CAAA;EACzEnC,cAAK,CAACQ,SAAS,CAAC,MAAM;AAClB;AACA,IAAA,IAAIuG,QAAQ,EAAE7G,UAAU,EAAE,CAAA;AAC9B,GAAC,EAAE,CAAC6G,QAAQ,EAAE7G,UAAU,CAAC,CAAC,CAAA;;AAE1B;AACA,EAAA,MAAMW,MAAM,GAAGb,cAAK,CAACsH,MAAM,CAAmB,IAAI,CAAC,CAAA;AACnD,EAAA,MAAMvG,SAAS,GAAGH,YAAY,CAACC,MAAM,EAAE,MAAM;IACzC,MAAMO,KAAK,GAAGoG,MAAM,CAACC,QAAQ,CAACN,QAAQ,EAAE/F,KAAK,EAAS,EAAE,CAAC,CAAA;IACzD,MAAME,MAAM,GAAGkG,MAAM,CAACC,QAAQ,CAACN,QAAQ,EAAE7F,MAAM,EAAS,EAAE,CAAC,CAAA;IAC3D,OAAOF,KAAK,IAAIE,MAAM,GAAG;MAAEF,KAAK;AAAEE,MAAAA,MAAAA;AAAO,KAAC,GAAG,IAAI,CAAA;AACrD,GAAC,CAAC,CAAA;;AAEF;AACA,EAAA,MAAMoG,eAAe,GAAG1H,cAAK,CAACG,OAAO,CAAC,MAAM;AACxC,IAAA,IAAI,CAACoH,cAAc,IAAI,CAACxG,SAAS,EAAE;AAC/B,MAAA,OAAO,IAAI,CAAA;AACf,KAAA;IACA,MAAM4G,eAAe,GAAGJ,cAAc,CAACnG,KAAK,GAAGL,SAAS,CAACK,KAAK,CAAA;IAC9D,MAAMwG,aAAa,GAAGL,cAAc,CAACjG,MAAM,GAAGP,SAAS,CAACO,MAAM,CAAA;AAC9D,IAAA,MAAMuG,SAAS,GAAGpE,IAAI,CAACqE,GAAG,CAAC,CAAC,EAAErE,IAAI,CAACqE,GAAG,CAACH,eAAe,EAAEC,aAAa,CAAC,CAAC,CAAA;IACvE,OAAO;MACHxG,KAAK,EAAEL,SAAS,CAACK,KAAK,GAAGyG,SAAS,IAAIb,KAAK,IAAI,CAAC,CAAC;MACjD1F,MAAM,EAAEP,SAAS,CAACO,MAAM,GAAGuG,SAAS,IAAIb,KAAK,IAAI,CAAC,CAAA;KACrD,CAAA;GACJ,EAAE,CAACO,cAAc,EAAExG,SAAS,EAAEiG,KAAK,CAAC,CAAC,CAAA;;AAEtC;AACA,EAAA,MAAM3E,aAAa,GAAGqD,gBAAgB,CAACvD,aAAa,CAAC,CAAA;;AAErD;EACA,MAAMG,gBAAgB,GAAGJ,cAAc,CAACC,aAAa,EAAEC,aAAa,EAAEC,aAAa,CAAC,CAAA;;AAEpF;EACArC,cAAK,CAAC+H,eAAe,CAAC,MAAM;AACxB,IAAA,IAAIf,KAAK,IAAI,CAAC1E,gBAAgB,EAAE;AAC5BD,MAAAA,aAAa,EAAE,CAAA;AACnB,KAAA;GACH,EAAE,CAACC,gBAAgB,EAAE0E,KAAK,EAAE3E,aAAa,CAAC,CAAC,CAAA;EAE5C,MAAM2F,YAAY,GACdN,eAAe,IACfH,cAAc,KACbG,eAAe,CAACtG,KAAK,GAAGmG,cAAc,CAACnG,KAAK,IAAIsG,eAAe,CAACpG,MAAM,GAAGiG,cAAc,CAACjG,MAAM,CAAC,CAAA;EAEpG,oBACI2G,GAAA,CAACC,aAAa,EAAA;AACVC,IAAAA,GAAG,EAAEhG,aAAAA;AACL;AAAA;AACAiG,IAAAA,QAAQ,EAAEJ,YAAY,GAAG,CAAC,GAAG9G,SAAU;IACvCmH,SAAS,EAAE,CAAG3I,EAAAA,SAAS,CAAgB,aAAA,CAAA;IAAA4I,QAAA,eAEvCL,GAAA,CAACM,SAAS,EAAA;AACN1H,MAAAA,MAAM,EAAE2H,YAAY,CAAC3H,MAAM,EAAEqG,UAAU,CAAE;AACzCD,MAAAA,KAAK,EAAEA,KAAM;AACbG,MAAAA,GAAG,EAAEA,GAAI;MACTiB,SAAS,EAAE,CAAG3I,EAAAA,SAAS,CAAc,WAAA,CAAA;AACrCyH,MAAAA,QAAQ,EAAE;AACN,QAAA,GAAGA,QAAQ;AACXsB,QAAAA,KAAK,EAAE;UACH,GAAGtB,QAAQ,EAAEsB,KAAK;AAClB,UAAA,IAAIf,eAAe,IAAI;YACnBgB,SAAS,EAAEnB,cAAc,EAAEjG,MAAM;YACjCqH,QAAQ,EAAEpB,cAAc,EAAEnG,KAAAA;AAC9B,WAAC,CAAC;AACF;AACAwH,UAAAA,UAAU,EAAE5B,KAAK,IAAI,CAAC1E,gBAAgB,IAAI,CAACuG,eAAe,EAAE,GAAG,WAAW,GAAG3H,SAAAA;AACjF,SAAA;OACF;AACFmG,MAAAA,0BAA0B,EAAEA,0BAAAA;KAC/B,CAAA;AAAC,GACS,CAAC,CAAA;AAExB,CAAC,EAAE7F,OAAO,CAAC;;ACzFX;AACO,MAAMsH,cAA6C,GAAGA,CAAC;EAC1DC,gBAAgB;EAChBC,MAAM;EACNC,eAAe;EACfC,iBAAiB;EACjBC,kBAAkB;EAClBC,sBAAsB;EACtBC,wBAAwB;EACxBC,SAAS;AACTC,EAAAA,cAAAA;AACJ,CAAC,KAAK;EACF,MAAM;IACFC,WAAW;IACXC,WAAW;IACXC,YAAY;IACZC,iBAAiB;IACjBC,WAAW;IACXC,WAAW;IACXC,iBAAiB;IACjBC,eAAe;AACfC,IAAAA,cAAAA;AACJ,GAAC,GAAGC,iBAAiB,CAACC,oBAAoB,CAAC;IACvCC,UAAU,EAAEnB,MAAM,CAACjH,MAAM;AACzByH,IAAAA,WAAW,EAAET,gBAAAA;AACjB,GAAC,CAAC,CAAA;;AAEF;AACA,EAAA,MAAMqB,KAAK,GAAGpB,MAAM,CAACQ,WAAW,CAAC,EAAEY,KAAK,CAAA;AACxC,EAAA,MAAMC,WAAW,GAAGrB,MAAM,CAACQ,WAAW,CAAC,EAAEa,WAAW,CAAA;AACpD,EAAA,MAAMC,IAAI,GAAGtB,MAAM,CAACQ,WAAW,CAAC,EAAEc,IAAI,CAAA;EACtC,MAAMC,QAAQ,GACVH,KAAK,IAAIC,WAAW,IAAIC,IAAI,gBACxBrC,GAAA,CAACuC,YAAY,EAAA;AAACC,IAAAA,EAAE,EAAC,KAAK;AAACL,IAAAA,KAAK,EAAEA,KAAM;AAACC,IAAAA,WAAW,EAAEA,WAAY;AAACC,IAAAA,IAAI,EAAEA,IAAK;AAACI,IAAAA,KAAK,EAAC,QAAA;GAAU,CAAC,GAC5F,IAAI,CAAA;;AAEZ;EACA,MAAMC,iBAAiB,GACnBf,WAAW,GAAG,CAAC,IAAIR,sBAAsB,gBACrCnB,GAAA,CAACgC,iBAAiB,EAAA;AACdT,IAAAA,WAAW,EAAEA,WAAY;AACzBI,IAAAA,WAAW,EAAEA,WAAY;AACzBC,IAAAA,WAAW,EAAEA,WAAY;AACzBE,IAAAA,eAAe,EAAEA,eAAgB;AACjCD,IAAAA,iBAAiB,EAAEA,iBAAkB;AAAA,IAAA,GACjCV,sBAAsB;IAC1BwB,mBAAmB,EAAGC,KAAa,IAAK;MACpC,MAAM/D,KAAK,GAAGsC,sBAAsB,EAAEwB,mBAAmB,GAAGC,KAAK,CAAC,IAAI,EAAE,CAAA;MACxE,OAAO;AACH,QAAA,GAAG/D,KAAK;AACRqB,QAAAA,GAAG,EAAE2C,SAAS,CACThE,KAAK,EAAUqB,GAAG;AACnB;AACAqB,QAAAA,WAAW,KAAKqB,KAAK,GAAGxB,wBAAwB,GAAGnI,SACvD,CAAA;OACH,CAAA;AACL,KAAA;GACH,CAAC,GACF,IAAI,CAAA;;AAEZ;EACA,MAAM,CAAC8F,KAAK,EAAE+D,QAAQ,CAAC,GAAG/K,cAAK,CAACC,QAAQ,CAAqBiB,SAAS,CAAC,CAAA;AACvE,EAAA,MAAM8J,WAAW,GAAG9B,iBAAiB,IAAIC,kBAAkB,CAAA;AAC3D,EAAA,MAAM/G,aAAa,GAAGpC,cAAK,CAACG,OAAO,CAAC,MAAM;AACtC,IAAA,IAAI,CAAC6K,WAAW,EAAE,OAAO9J,SAAS,CAAA;AAClC,IAAA,OAAQ0B,QAAgB,IAAK;AACzBmI,MAAAA,QAAQ,CAAC,CAACE,SAAS,GAAG,CAAC,KAAKxH,IAAI,CAACyH,GAAG,CAAC,CAAC,EAAEtI,QAAQ,GAAGqI,SAAS,CAAC,CAAC,CAAA;KACjE,CAAA;AACL,GAAC,EAAE,CAACD,WAAW,CAAC,CAAC,CAAA;AACjB,EAAA,MAAMG,MAAM,GAAGnL,cAAK,CAACoL,WAAW,CAAC,MAAMhJ,aAAa,GAAG,GAAG,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC,CAAA;AAC7E,EAAA,MAAMiJ,OAAO,GAAGrL,cAAK,CAACoL,WAAW,CAAC,MAAMhJ,aAAa,GAAG,GAAG,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC,CAAA;EAC9EpC,cAAK,CAACQ,SAAS,CAAC,MAAM;AAClB;IACA,IAAI,OAAOgJ,WAAW,KAAK,QAAQ,EAAEuB,QAAQ,CAAC7J,SAAS,CAAC,CAAA;AAC5D,GAAC,EAAE,CAACsI,WAAW,CAAC,CAAC,CAAA;AACjB,EAAA,MAAM8B,YAAY,GAAGN,WAAW,iBAC5BO,IAAA,CAAAC,QAAA,EAAA;IAAAlD,QAAA,EAAA,cACIL,GAAA,CAACwD,UAAU,EAAA;AAAA,MAAA,GAAKvC,iBAAiB;AAAEwC,MAAAA,QAAQ,EAAC,KAAK;AAACC,MAAAA,IAAI,EAAEC,qBAAsB;AAACC,MAAAA,OAAO,EAAEV,MAAAA;AAAO,KAAE,CAAC,eAClGlD,GAAA,CAACwD,UAAU,EAAA;AAAA,MAAA,GACHtC,kBAAkB;AACtBuC,MAAAA,QAAQ,EAAC,KAAK;AACdI,MAAAA,UAAU,EAAE,CAAC9E,KAAK,IAAIA,KAAK,IAAI,CAAE;AACjC2E,MAAAA,IAAI,EAAEI,sBAAuB;AAC7BF,MAAAA,OAAO,EAAER,OAAAA;AAAQ,KACpB,CAAC,CAAA;AAAA,GACJ,CACL,CAAA;AAED,EAAA,MAAMW,SAAS,GAAGhM,cAAK,CAACG,OAAO,CAC3B,MACI8L,OAAO,CACH,CAACpB,KAAa,EAAE9D,QAAiB,KAAK;AAClC,IAAA,OAAO+D,SAAS,CAAC9B,MAAM,GAAG6B,KAAK,CAAC,CAAChK,MAAM,EAAEkG,QAAQ,GAAGwC,cAAc,GAAGrI,SAAS,CAAC,CAAA;GAClF;AACD;AACA,EAAA,CAAC,GAAGgL,IAAI,KAAKA,IAAI,CAACC,IAAI,EAC1B,CAAC,EACL,CAACnD,MAAM,EAAEO,cAAc,CAC3B,CAAC,CAAA;EAED,oBACIgC,IAAA,CAAAC,QAAA,EAAA;IAAAlD,QAAA,EAAA,cACIL,GAAA,CAACmE,MAAM,EAAA;AACH5C,MAAAA,WAAW,EAAEA,WAAY;AACzBP,MAAAA,eAAe,EAAEA,eAAgB;MACjCoD,UAAU,EAAA,IAAA;AACVC,MAAAA,EAAE,EAAE7C,WAAY;AAChBtB,MAAAA,GAAG,EAAEuB,YAAa;AAClB6C,MAAAA,QAAQ,EAAE5C,iBAAkB;AAC5BK,MAAAA,cAAc,EAAEA,cAAe;AAAA1B,MAAAA,QAAA,EAE9BU,MAAM,CAACwD,GAAG,CAAC,CAAC;QAAEvF,KAAK;QAAEpG,MAAM;QAAE,GAAG4L,UAAAA;OAAY,EAAE5B,KAAK,KAAK;AACrD,QAAA,MAAM9D,QAAQ,GAAG8D,KAAK,KAAKrB,WAAW,CAAA;QACtC,oBACIvB,GAAA,CAACrB,UAAU,EAAA;AACPG,UAAAA,QAAQ,EAAEA,QAAS;AAEnBE,UAAAA,KAAK,EAAE;AACH,YAAA,GAAGwF,UAAU;YACbxF,KAAK;AACLpG,YAAAA,MAAM,EAAEmL,SAAS,CAACnB,KAAK,EAAE9D,QAAQ,CAAA;WACnC;AACFC,UAAAA,KAAK,EAAED,QAAQ,GAAGC,KAAK,GAAG9F,SAAU;AACpCkB,UAAAA,aAAa,EAAEA,aAAAA;AAAc,SAAA,EAPxB6E,KAQR,CAAC,CAAA;OAET,CAAA;KACG,CAAC,EACR,CAACsD,QAAQ,IAAII,iBAAiB,IAAIW,YAAY,kBAC3CC,IAAA,CAACmB,OAAO,EAAA;AACJvE,MAAAA,GAAG,EAAEmB,SAAU;MACfjB,SAAS,EAAE,CAAG3I,EAAAA,SAAS,CAAW,QAAA,CAAA;AAClCiN,MAAAA,WAAW,EAAC,UAAU;AACtBC,MAAAA,MAAM,EAAC,QAAQ;AACfC,MAAAA,GAAG,EAAC,KAAK;AAAAvE,MAAAA,QAAA,EAERiC,CAAAA,QAAQ,eAETgB,IAAA,CAACmB,OAAO,EAAA;QAACrE,SAAS,EAAE,CAAG3I,EAAAA,SAAS,CAAmB,gBAAA,CAAA;AAACiN,QAAAA,WAAW,EAAC,YAAY;AAACE,QAAAA,GAAG,EAAC,SAAS;QAAAvE,QAAA,EAAA,CACrFqC,iBAAiB,EACjBW,YAAY,CAAA;AAAA,OACR,CAAC,CAAA;AAAA,KACL,CACZ,CAAA;AAAA,GACH,CAAC,CAAA;AAEX,CAAC;;ACjKD;AACO,SAASwB,KAAKA,CAACC,YAA4C,EAAE;AAChE,EAAA,IAAIA,YAAY,YAAYC,WAAW,EAAE,OAAOD,YAAY,CAAA;EAC5D,OAAOA,YAAY,EAAEzM,OAAO,CAAA;AAChC;;ACCA,SAAS2M,uBAAuBA,CAACpN,UAA0C,EAAEqN,IAAY,EAAE;EACvF,IAAIC,YAA2B,GAAG,IAAI,CAAA;EACtC,OAAO;AACHC,IAAAA,GAAGA,GAAG;AACF,MAAA,MAAMC,OAAO,GAAGP,KAAK,CAACjN,UAAU,CAAC,CAAA;MACjC,IAAI,CAACwN,OAAO,EAAE,OAAA;AACdF,MAAAA,YAAY,GAAGE,OAAO,CAAC5E,KAAK,CAAC6E,kBAAkB,CAAA;AAC/CD,MAAAA,OAAO,CAAC5E,KAAK,CAAC6E,kBAAkB,GAAGJ,IAAI,CAAA;KAC1C;AACDK,IAAAA,KAAKA,GAAG;AACJ,MAAA,MAAMF,OAAO,GAAGP,KAAK,CAACjN,UAAU,CAAC,CAAA;AACjC,MAAA,IAAI,CAACwN,OAAO,IAAIF,YAAY,KAAK,IAAI,EAAE,OAAA;AACvCE,MAAAA,OAAO,CAAC5E,KAAK,CAAC6E,kBAAkB,GAAGH,YAAY,CAAA;AACnD,KAAA;GACH,CAAA;AACL,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeK,mBAAmBA,CAAC;EACtCC,OAAO;AACPH,EAAAA,kBAAAA;AAQJ,CAAC,EAAE;EACC,MAAMI,KAAK,GAAIC,QAAQ,EAAUH,mBAAmB,EAAEI,IAAI,CAACD,QAAQ,CAAC,CAAA;AACpE,EAAA,MAAME,oBAAoB,GAAGhF,eAAe,EAAE,CAAA;EAC9C,MAAM;AAAEiF,IAAAA,SAAAA;AAAU,GAAC,GAAGC,QAAe,CAAA;AACrC,EAAA,IAAIF,oBAAoB,IAAI,CAACH,KAAK,IAAI,CAACI,SAAS,IAAI,CAACR,kBAAkB,EAAEU,MAAM,IAAI,CAACV,kBAAkB,EAAEW,MAAM,EAAE;AAC5G;AACAR,IAAAA,OAAO,EAAE,CAAA;AACT,IAAA,OAAA;AACJ,GAAA;;AAEA;EACA,MAAMS,oBAAoB,GAAGjB,uBAAuB,CAACK,kBAAkB,CAACU,MAAM,EAAEV,kBAAkB,CAACJ,IAAI,CAAC,CAAA;EACxG,MAAMiB,oBAAoB,GAAGlB,uBAAuB,CAACK,kBAAkB,CAACW,MAAM,EAAEX,kBAAkB,CAACJ,IAAI,CAAC,CAAA;EAExGgB,oBAAoB,CAACd,GAAG,EAAE,CAAA;;AAE1B;EACA,MAAMM,KAAK,CAAC,MAAM;IACdQ,oBAAoB,CAACX,KAAK,EAAE,CAAA;IAE5BO,SAAS,CAACL,OAAO,CAAC,CAAA;IAElBU,oBAAoB,CAACf,GAAG,EAAE,CAAA;GAC7B,CAAC,CAACgB,kBAAkB,CAAA;EAErBD,oBAAoB,CAACZ,KAAK,EAAE,CAAA;AAChC;;ACnEA;AACO,MAAMc,SAAS,GAAIhB,OAA2B,IACjDA,OAAO,EAAEiB,OAAO,CAAC,KAAK,CAAC,GAAIjB,OAAO,GAAwBA,OAAO,EAAEkB,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI;;ACQnG;;AAMA,MAAMC,WAAyB,GAAG;AAAEC,EAAAA,MAAM,EAAE,KAAK;AAAEzF,EAAAA,MAAM,EAAE,EAAE;AAAE0F,EAAAA,aAAa,eAAE1O,cAAK,CAAC2O,SAAS,EAAC;AAAE,CAAC,CAAA;AAIjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,gBAAgBA,CAC5B9H,KAAQ,EASV;AACE,EAAA,MAAM+H,QAAQ,GAAG7O,cAAK,CAACsH,MAAM,CAACR,KAAK,CAAC,CAAA;EAEpC9G,cAAK,CAACQ,SAAS,CAAC,MAAM;IAClBqO,QAAQ,CAACvO,OAAO,GAAGwG,KAAK,CAAA;AAC5B,GAAC,EAAE,CAACA,KAAK,CAAC,CAAC,CAAA;;AAEX;AACA,EAAA,MAAMgI,YAAY,GAAG9O,cAAK,CAACsH,MAAM,CAA2C,EAAE,CAAC,CAAA;AAE/E,EAAA,MAAMyH,eAAe,GAAG/O,cAAK,CAACsH,MAAM,CAAmB,IAAI,CAAC,CAAA;EAC5D,MAAM,CAAC0H,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGjP,cAAK,CAACC,QAAQ,CAC9D,OAAO;AAAE,IAAA,GAAGuO,WAAW;IAAE,GAAG1H,KAAAA;AAAM,GAAC,CACvC,CAAC,CAAA;AAED,EAAA,MAAMoI,eAAe,GAAGlP,cAAK,CAACG,OAAO,CAAC,MAAM;IACxC,MAAMgP,gBAAmE,GAAG,EAAE,CAAA;IAE9E,eAAeC,KAAKA,GAAG;AACnB,MAAA,MAAMC,YAAY,GAAGN,eAAe,CAACzO,OAAO,CAAA;MAC5C,IAAI,CAAC+O,YAAY,EAAE;AACf,QAAA,OAAA;AACJ,OAAA;AACA,MAAA,MAAMC,YAAY,GAAGR,YAAY,CAACxO,OAAO,CAACiP,SAAS,CAC9CC,QAAQ,IAAKA,QAAQ,CAAClP,OAAO,KAAK+O,YACvC,CAAW,CAAA;AAEX,MAAA,MAAM7B,mBAAmB,CAAC;AACtBC,QAAAA,OAAOA,GAAG;AACN;UACAwB,qBAAqB,CAAEQ,SAAS,KAAM;AAAE,YAAA,GAAGA,SAAS;AAAEhB,YAAAA,MAAM,EAAE,KAAA;AAAM,WAAC,CAAC,CAAC,CAAA;SAC1E;AACD;AACAnB,QAAAA,kBAAkB,EAAE;AAChBU,UAAAA,MAAM,EAAEe,eAAe;AACvBd,UAAAA,MAAM,EAAEkB,gBAAgB,CAACG,YAAY,CAAC;AACtCpC,UAAAA,IAAI,EAAExN,SAAAA;AACV,SAAA;AACJ,OAAC,CAAC,CAAA;AACN,KAAA;IAEA,eAAegQ,IAAIA,CAACC,cAA2B,EAAE;AAAE5G,MAAAA,gBAAAA;KAAkC,GAAG,EAAE,EAAE;AACxF;AACA,MAAA,MAAM6G,YAAY,GAAGT,gBAAgB,CAACpG,gBAAgB,CAAQ,EAAEzI,OAAO,IAAI+N,SAAS,CAACsB,cAAc,CAAC,CAAA;;AAEpG;AACA,MAAA,MAAM3G,MAAM,GAAG6F,QAAQ,CAACvO,OAAO,EAAE0I,MAAM,EAAEwD,GAAG,CAAC,CAACvF,KAAK,EAAE4I,GAAG,KAAK;AACzD;AACA,QAAA,IAAIhP,MAAM,GAAGiO,YAAY,CAACxO,OAAO,CAACuP,GAAG,CAAC,CAAA;QACtC,IAAI,CAAChP,MAAM,EAAE;AACTA,UAAAA,MAAM,gBAAGb,cAAK,CAAC2O,SAAS,EAAE,CAAA;AAC1BG,UAAAA,YAAY,CAACxO,OAAO,CAACuP,GAAG,CAAC,GAAGhP,MAAM,CAAA;AACtC,SAAA;;AAEA;AACA,QAAA,MAAMwG,0BAA0B,GAC5BuI,YAAY,IAAIC,GAAG,KAAK9G,gBAAgB,GAAG;AAAEzI,UAAAA,OAAO,EAAEsP,YAAAA;AAAa,SAAC,GAAG1O,SAAS,CAAA;QAEpF,OAAO;UAAEmG,0BAA0B;AAAE,UAAA,GAAGJ,KAAK;AAAEpG,UAAAA,MAAAA;SAAQ,CAAA;AAC3D,OAAC,CAAC,CAAA;AAEF,MAAA,MAAM2M,mBAAmB,CAAC;QACtBC,OAAO,EAAEA,MAAM;AACX;UACAwB,qBAAqB,CAAEQ,SAAS,KAAM;AAClC,YAAA,GAAGA,SAAS;YACZ,GAAGZ,QAAQ,CAACvO,OAAO;AACnBiJ,YAAAA,cAAc,EAAEwF,eAAe;AAC/BL,YAAAA,aAAa,EAAE;AAAEpO,cAAAA,OAAO,EAAEqP,cAAAA;aAAgB;AAC1ClB,YAAAA,MAAM,EAAE,IAAI;YACZqB,OAAO,EAAEA,MAAM;AACXV,cAAAA,KAAK,EAAE,CAAA;AACPP,cAAAA,QAAQ,CAACvO,OAAO,EAAEwP,OAAO,IAAI,CAAA;aAChC;YACD9G,MAAM;YACND,gBAAgB,EAAEA,gBAAgB,IAAI,CAAA;AAC1C,WAAC,CAAC,CAAC,CAAA;SACN;AACD;AACAuE,QAAAA,kBAAkB,EAAE;AAChBU,UAAAA,MAAM,EAAE4B,YAAY;AACpB3B,UAAAA,MAAM,EAAEc,eAAe;AACvB7B,UAAAA,IAAI,EAAExN,SAAAA;AACV,SAAA;AACJ,OAAC,CAAC,CAAA;AACN,KAAA;IAEA,OAAOuM,OAAO,CAAE8D,OAAwB,KAAM;MAC1C5H,GAAGA,CAACkF,OAA2B,EAAE;AAC7B;AACA,QAAA,IAAI0C,OAAO,EAAEhH,gBAAgB,KAAK7H,SAAS,IAAImM,OAAO,EAAE;AACpD8B,UAAAA,gBAAgB,CAACY,OAAO,CAAChH,gBAAgB,CAAC,GAAG;YAAEzI,OAAO,EAAE+N,SAAS,CAAChB,OAAO,CAAA;WAAG,CAAA;AAChF,SAAA;OACH;MACDxB,OAAOA,CAACmE,CAAmB,EAAE;AACzBN,QAAAA,IAAI,CAACM,CAAC,CAAC/B,MAAM,EAAiB8B,OAAO,CAAC,CAAA;AAC1C,OAAA;AACJ,KAAC,CAAC,CAAC,CAAA;GACN,EAAE,EAAE,CAAC,CAAA;EAEN,OAAO;IAAEb,eAAe;AAAEF,IAAAA,kBAAAA;GAAoB,CAAA;AAClD;;AC9HA,MAAMiB,KAAK,GAAGC,UAAU,CAAqC,CAACpJ,KAAK,EAAEqB,GAAG,KAAK;EACzE,MAAM;IACFE,SAAS;IACToG,MAAM;IACN0B,gBAAgB;IAChBL,OAAO;IACPpB,aAAa;IACb3F,gBAAgB;IAChBK,sBAAsB;IACtBH,eAAe;IACfD,MAAM;IACNG,kBAAkB;IAClBD,iBAAiB;AACjBK,IAAAA,cAAc,EAAE6G,YAAY;IAC5B,GAAGC,cAAAA;AACP,GAAC,GAAGvJ,KAAK,CAAA;AACT,EAAA,MAAMuC,wBAAwB,GAAGrJ,cAAK,CAACsH,MAAM,CAAC,IAAI,CAAC,CAAA;AACnD,EAAA,MAAMgC,SAAS,GAAGtJ,cAAK,CAACsH,MAAM,CAAC,IAAI,CAAC,CAAA;AACpC,EAAA,MAAMkI,QAAQ,GAAGxP,cAAK,CAACsH,MAAM,CAAC,IAAI,CAAC,CAAA;EACnC,MAAMgJ,qBAAqB,GAAGtQ,cAAK,CAACsH,MAAM,CAAC,CAACkI,QAAQ,EAAElG,SAAS,CAAC,CAAC,CAAA;AAEjE,EAAA,MAAMiH,WAAW,GAAGvQ,cAAK,CAACoL,WAAW,CAChCoF,GAAU,IAAK;AACZ,IAAA,MAAMC,aAAa,GAAGD,GAAG,CAACvC,MAAM,CAAA;IAChC,IAAI,EAAEwC,aAAa,YAAYzD,WAAW,CAAC,IAAI,EAAEwD,GAAG,YAAYE,UAAU,CAAC,EAAE,OAAA;;AAE7E;AACA,IAAA,IAAID,aAAa,CAACzK,WAAW,GAAGwK,GAAG,CAAC3M,OAAO,IAAI4M,aAAa,CAAC3K,YAAY,GAAG0K,GAAG,CAACzM,OAAO,EAAE,OAAA;AAEzF+L,IAAAA,OAAO,IAAI,CAAA;AACf,GAAC,EACD,CAACA,OAAO,CACZ,CAAC,CAAA;EAED,oBACI7H,GAAA,CAAC0I,QAAQ,EAAA;AACLxI,IAAAA,GAAG,EAAEA,GAAI;AACTE,IAAAA,SAAS,EAAEuI,UAAU,CAACvI,SAAS,EAAE3I,SAAS,CAAE;AAC5CgP,IAAAA,aAAa,EAAEA,aAAc;AAC7BD,IAAAA,MAAM,EAAEA,MAAO;AACfqB,IAAAA,OAAO,EAAEA,OAAQ;AACjBK,IAAAA,gBAAgB,EAAEA,gBAAiB;AACnCU,IAAAA,YAAY,EAAExH,wBAAyB;AAAA,IAAA,GACnCgH,cAAc;AAClB;IACAS,gBAAgB,EAAA,IAAA;IAAAxI,QAAA,eAEhBL,GAAA,CAAC8I,iBAAiB,EAAA;AAACC,MAAAA,YAAY,EAAEV,qBAAsB;AAACW,MAAAA,QAAQ,EAAEV,WAAY;MAAAjI,QAAA,eAC1EL,GAAA,CAACiJ,aAAa,EAAA;AAACC,QAAAA,KAAK,EAAC,MAAM;QAAA7I,QAAA,eACvBL,GAAA,CAACa,cAAc,EAAA;AACXC,UAAAA,gBAAgB,EAAEA,gBAAiB;AACnCE,UAAAA,eAAe,EAAEA,eAAgB;AACjCG,UAAAA,sBAAsB,EAAEA,sBAAuB;AAC/CJ,UAAAA,MAAM,EAAEA,MAAO;AACfE,UAAAA,iBAAiB,EAAEA,iBAAkB;AACrCC,UAAAA,kBAAkB,EAAEA,kBAAmB;AACvCG,UAAAA,SAAS,EAAEA,SAAU;AACrBC,UAAAA,cAAc,EAAEf,YAAY,CAAC4H,YAAY,EAAEZ,QAAQ,CAAE;AACrDnG,UAAAA,wBAAwB,EAAEA,wBAAAA;SAC7B,CAAA;OACU,CAAA;KACA,CAAA;AAAC,GACd,CAAC,CAAA;AAEnB,CAAC,CAAC,CAAA;AACF4G,KAAK,CAACmB,WAAW,GAAG3R,cAAc,CAAA;AAClCwQ,KAAK,CAAC5H,SAAS,GAAG3I,SAAS,CAAA;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM2R,aAAa,GAAGzP,MAAM,CAAC0P,MAAM,CAACrB,KAAK,EAAE;AAAErB,EAAAA,gBAAAA;AAAiB,CAAC;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mosaic-e6581097.js","sources":["../../../src/components/mosaic/Mosaic.tsx"],"sourcesContent":["import { MouseEventHandler, useMemo } from 'react';\n\nimport classNames from 'classnames';\n\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { Alignment, AspectRatio, Theme, Thumbnail, ThumbnailProps } from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface MosaicProps extends GenericProps, HasTheme {\n /** Thumbnails. */\n thumbnails: ThumbnailProps[];\n /** On image click callback. */\n onImageClick?(index: number): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Mosaic';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<MosaicProps> = {};\n\n/**\n * Mosaic component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Mosaic = forwardRef<MosaicProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const { className, theme = defaultTheme, thumbnails, onImageClick, ...forwardedProps } = props;\n const handleImageClick = useMemo(() => {\n if (!onImageClick) return undefined;\n\n return (index: number, onClick?: MouseEventHandler): MouseEventHandler =>\n (event) => {\n onClick?.(event);\n onImageClick?.(index);\n };\n }, [onImageClick]);\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, theme }), {\n [`${CLASSNAME}--has-1-thumbnail`]: thumbnails?.length === 1,\n [`${CLASSNAME}--has-2-thumbnails`]: thumbnails?.length === 2,\n [`${CLASSNAME}--has-3-thumbnails`]: thumbnails?.length === 3,\n [`${CLASSNAME}--has-4-thumbnails`]: thumbnails?.length >= 4,\n })}\n >\n <div className={`${CLASSNAME}__wrapper`}>\n {thumbnails.slice(0, 4).map((thumbnail: any, index: number) => {\n const { image, onClick, align, ...thumbnailProps } = thumbnail;\n\n return (\n <div key={index} className={`${CLASSNAME}__thumbnail`}>\n <Thumbnail\n {...thumbnailProps}\n align={align || Alignment.left}\n image={image}\n theme={theme}\n aspectRatio={AspectRatio.free}\n fillHeight\n onClick={handleImageClick?.(index, onClick) || onClick}\n />\n\n {thumbnails.length > 4 && index === 3 && (\n <div className={`${CLASSNAME}__overlay`}>\n <span>+{thumbnails.length - 4}</span>\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n});\nMosaic.displayName = COMPONENT_NAME;\nMosaic.className = CLASSNAME;\nMosaic.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","Mosaic","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","className","theme","thumbnails","onImageClick","forwardedProps","handleImageClick","useMemo","undefined","index","onClick","event","_jsx","classNames","handleBasicClasses","prefix","length","children","slice","map","thumbnail","image","align","thumbnailProps","_jsxs","Thumbnail","Alignment","left","aspectRatio","AspectRatio","free","fillHeight","displayName","defaultProps"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification-49837625.js","sources":["../../../src/components/notification/constants.ts","../../../src/components/notification/Notification.tsx"],"sourcesContent":["import { mdiAlert, mdiAlertCircle, mdiCheckCircle, mdiInformation } from '@lumx/icons';\n\n/**\n * Notification delay before hiding.\n */\nexport const HIDE_DELAY = 6000;\n\n/**\n * Notification icon and colors according to their type.\n */\nexport const NOTIFICATION_CONFIGURATION = {\n error: {\n color: 'red',\n icon: mdiAlert,\n },\n info: {\n color: 'blue',\n icon: mdiInformation,\n },\n success: {\n color: 'green',\n icon: mdiCheckCircle,\n },\n warning: {\n color: 'yellow',\n icon: mdiAlertCircle,\n },\n};\n","import { useRef } from 'react';\n\nimport classNames from 'classnames';\nimport { Button, Emphasis, Icon, Kind, Size, Theme } from '@lumx/react';\nimport { DOCUMENT, NOTIFICATION_TRANSITION_DURATION } from '@lumx/react/constants';\nimport { NOTIFICATION_CONFIGURATION } from '@lumx/react/components/notification/constants';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { useTransitionVisibility } from '@lumx/react/hooks/useTransitionVisibility';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { Portal } from '@lumx/react/utils';\n\n/**\n * Defines the props of the component.\n */\nexport interface NotificationProps extends GenericProps, HasTheme {\n /** Action button label. */\n actionLabel?: string;\n /** Content. */\n content?: React.ReactNode;\n /** Whether the component is open or not. */\n isOpen?: boolean;\n /** Notification type. */\n type?: Kind;\n /** Z-axis position. */\n zIndex?: number;\n /** On action button click callback. */\n onActionClick?(): void;\n /** On click callback. */\n onClick?(): void;\n /** Whether the notification should be rendered into a DOM node that exists outside the DOM hierarchy of the parent component. */\n usePortal?: boolean;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Notification';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<NotificationProps> = {\n zIndex: 9999,\n usePortal: true,\n};\n\n/* eslint-disable react-hooks/rules-of-hooks, jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\n/**\n * Notification component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Notification = forwardRef<NotificationProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n actionLabel,\n className,\n content,\n isOpen,\n onActionClick,\n onClick,\n theme = defaultTheme,\n type,\n zIndex = DEFAULT_PROPS.zIndex,\n usePortal = DEFAULT_PROPS.usePortal,\n style,\n ...forwardedProps\n } = props;\n if (!DOCUMENT) {\n // Can't render in SSR.\n return null;\n }\n const { color, icon } = NOTIFICATION_CONFIGURATION[type as Kind] || {};\n const rootRef = useRef<HTMLDivElement>(null);\n const isVisible = useTransitionVisibility(rootRef, !!isOpen, NOTIFICATION_TRANSITION_DURATION);\n const hasAction: boolean = Boolean(onActionClick) && Boolean(actionLabel);\n\n const handleCallback = (evt: React.MouseEvent) => {\n onActionClick?.();\n evt.stopPropagation();\n };\n\n if (!type || !isVisible) {\n return null;\n }\n\n return (\n <Portal enabled={usePortal}>\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}\n <div\n ref={mergeRefs(ref, rootRef)}\n role=\"alert\"\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n color,\n hasAction,\n isHidden: !isOpen,\n prefix: CLASSNAME,\n }),\n )}\n onClick={onClick}\n style={{ ...style, zIndex }}\n >\n <div className={`${CLASSNAME}__icon`}>\n <Icon icon={icon} size={Size.s} />\n </div>\n <div className={`${CLASSNAME}__content`}>{content}</div>\n {hasAction && (\n <div className={`${CLASSNAME}__action`}>\n <Button emphasis={Emphasis.medium} theme={theme} onClick={handleCallback}>\n <span>{actionLabel}</span>\n </Button>\n </div>\n )}\n </div>\n </Portal>\n );\n});\nNotification.displayName = COMPONENT_NAME;\nNotification.className = CLASSNAME;\nNotification.defaultProps = DEFAULT_PROPS;\n"],"names":["NOTIFICATION_CONFIGURATION","error","color","icon","mdiAlert","info","mdiInformation","success","mdiCheckCircle","warning","mdiAlertCircle","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","zIndex","usePortal","Notification","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","actionLabel","className","content","isOpen","onActionClick","onClick","theme","type","style","forwardedProps","DOCUMENT","rootRef","useRef","isVisible","useTransitionVisibility","NOTIFICATION_TRANSITION_DURATION","hasAction","Boolean","handleCallback","evt","stopPropagation","_jsx","Portal","enabled","children","_jsxs","mergeRefs","role","classNames","handleBasicClasses","isHidden","prefix","Icon","size","Size","s","Button","emphasis","Emphasis","medium","displayName","defaultProps"],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export { P as Popover } from '../index-25d2a45e.js';
2
- export { P as Placement } from '../constants-43721918.js';
3
- //# sourceMappingURL=popover-dfcddda4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"popover-dfcddda4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"post-block-478bc3b8.js","sources":["../../../src/components/post-block/PostBlock.tsx"],"sourcesContent":["import { ReactNode } from 'react';\n\nimport classNames from 'classnames';\nimport { Orientation, Theme, Thumbnail, ThumbnailProps, ThumbnailVariant } from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface PostBlockProps extends GenericProps, HasTheme {\n /** Action toolbar content. */\n actions?: ReactNode;\n /** Attachment content. */\n attachments?: ReactNode;\n /** Author content. */\n author?: ReactNode;\n /** Metadata content. */\n meta?: ReactNode;\n /** Orientation. */\n orientation?: Orientation;\n /** Tag content. */\n tags?: ReactNode;\n /** Content (string, or sanitized html). */\n text?: string | { __html: string };\n /** Thumbnail. */\n thumbnailProps?: ThumbnailProps;\n /** Title. */\n title: string;\n /** On click callback. */\n onClick?(): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'PostBlock';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<PostBlockProps> = {\n orientation: Orientation.horizontal,\n};\n\n/**\n * PostBlock component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const PostBlock = forwardRef<PostBlockProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n actions,\n attachments,\n author,\n className,\n meta,\n onClick,\n orientation = DEFAULT_PROPS.orientation,\n tags,\n text,\n theme = defaultTheme,\n thumbnailProps,\n title,\n ...forwardedProps\n } = props;\n\n // Display text as string or HTML\n const textContent = typeof text === 'string' ? { children: text } : { dangerouslySetInnerHTML: text };\n\n return (\n <div\n ref={ref}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, orientation, theme }))}\n {...forwardedProps}\n >\n {thumbnailProps && (\n <div className={`${CLASSNAME}__thumbnail`}>\n <Thumbnail {...thumbnailProps} theme={theme} variant={ThumbnailVariant.rounded} />\n </div>\n )}\n <div className={`${CLASSNAME}__wrapper`}>\n {author && <div className={`${CLASSNAME}__author`}>{author}</div>}\n\n {title && (\n <button type=\"button\" className={`${CLASSNAME}__title`} onClick={onClick}>\n {title}\n </button>\n )}\n\n {meta && <span className={`${CLASSNAME}__meta`}>{meta}</span>}\n\n <p className={`${CLASSNAME}__text`} {...textContent} />\n\n {attachments && <div className={`${CLASSNAME}__attachments`}>{attachments}</div>}\n {(tags || actions) && (\n <div className={`${CLASSNAME}__toolbar`}>\n {tags && <div className={`${CLASSNAME}__tags`}>{tags}</div>}\n {actions && <div className={`${CLASSNAME}__actions`}>{actions}</div>}\n </div>\n )}\n </div>\n </div>\n );\n});\nPostBlock.displayName = COMPONENT_NAME;\nPostBlock.className = CLASSNAME;\nPostBlock.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","orientation","Orientation","horizontal","PostBlock","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","actions","attachments","author","className","meta","onClick","tags","text","theme","thumbnailProps","title","forwardedProps","textContent","children","dangerouslySetInnerHTML","_jsxs","classNames","handleBasicClasses","prefix","_jsx","Thumbnail","variant","ThumbnailVariant","rounded","type","displayName","defaultProps"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"progress-tracker-0fd35bea.js","sources":["../../../src/components/progress-tracker/ProgressTrackerProvider.tsx","../../../src/components/progress-tracker/ProgressTracker.tsx","../../../src/components/progress-tracker/ProgressTrackerStep.tsx","../../../src/components/progress-tracker/ProgressTrackerStepPanel.tsx"],"sourcesContent":["import { ReactNode, useEffect, useReducer } from 'react';\nimport { INIT_STATE, TabProviderContext, reducer } from '../tabs/state';\n\nexport interface ProgressTrackerProviderProps {\n /** Active step index. */\n activeStepIndex?: number;\n /** ProgressTrackerProvider children. */\n children: ReactNode;\n /** Step panel children should not render if the step panel is hidden. */\n isLazy?: boolean;\n /** Activate tabs on focus. */\n shouldActivateOnFocus?: boolean;\n /** Step change callback. */\n onChange?(index: number): void;\n}\n\nconst DEFAULT_PROPS: Partial<ProgressTrackerProviderProps> = {\n isLazy: INIT_STATE.isLazy,\n shouldActivateOnFocus: INIT_STATE.shouldActivateOnFocus,\n};\n\n/**\n * This component provides a context in which steps can be defined and linked to their step panel.\n *\n * It does not produce any markup so you can wrap it around any React elements and then split the ProgressTracker and ProgressTrackerPanel\n * components in the react tree.\n *\n * This works exactly as TabProvider so it uses TabProviderContext and tabs state.\n *\n * @param props React component props.\n * @return React element.\n */\nexport const ProgressTrackerProvider: React.FC<ProgressTrackerProviderProps> = (props) => {\n const { children, onChange, ...propState } = props;\n const [state, dispatch] = useReducer(reducer, INIT_STATE);\n\n // On prop state change => dispatch update.\n useEffect(\n () => {\n dispatch({\n type: 'update',\n payload: {\n ...DEFAULT_PROPS,\n ...propState,\n activeTabIndex: propState.activeStepIndex || INIT_STATE.activeTabIndex,\n },\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dispatch, ...Object.values(propState)],\n );\n\n // On active tab index state change => send update to the onChange.\n useEffect(\n () => {\n if (state === INIT_STATE || !onChange || propState.activeStepIndex === state.activeTabIndex) {\n return;\n }\n onChange(state.activeTabIndex);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [onChange, state.activeTabIndex],\n );\n\n return <TabProviderContext.Provider value={[state, dispatch]}>{children}</TabProviderContext.Provider>;\n};\nProgressTrackerProvider.defaultProps = DEFAULT_PROPS;\n","import React, { ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName } from '@lumx/core/js/utils/className';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useRovingTabIndex } from '../../hooks/useRovingTabIndex';\nimport { useTabProviderContextState } from '../tabs/state';\n\n/**\n * Defines the props of the component.\n */\nexport interface ProgressTrackerProps extends GenericProps {\n /** ARIA label (purpose of the set of steps). */\n ['aria-label']: string;\n /** Step list. */\n children: ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'ProgressTracker';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<ProgressTrackerProps> = {};\n\n/**\n * ProgressTracker component.\n *\n * Implements WAI-ARIA `tablist` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const ProgressTracker = forwardRef<ProgressTrackerProps, HTMLDivElement>((props, ref) => {\n const { 'aria-label': ariaLabel, children, className, ...forwardedProps } = props;\n const stepListRef = React.useRef(null);\n useRovingTabIndex({\n parentRef: stepListRef,\n elementSelector: '[role=\"tab\"]',\n keepTabIndex: false,\n extraDependencies: [children],\n });\n\n const state = useTabProviderContextState();\n const numberOfSteps = state?.ids?.tab?.length || 0;\n const backgroundPosition: number = numberOfSteps > 0 ? 100 / (numberOfSteps * 2) : 0;\n const trackPosition: number =\n numberOfSteps > 0 ? ((100 / (numberOfSteps - 1)) * (state?.activeTabIndex || 0)) / 100 : 0;\n\n return (\n <div ref={mergeRefs(ref, stepListRef)} {...forwardedProps} className={classNames(className, CLASSNAME)}>\n <div className={`${CLASSNAME}__steps`} role=\"tablist\" aria-label={ariaLabel}>\n {children}\n </div>\n\n <div\n className={`${CLASSNAME}__background-bar`}\n style={{ left: `${backgroundPosition}%`, right: `${backgroundPosition}%` }}\n />\n\n <div\n className={`${CLASSNAME}__foreground-bar`}\n style={{\n left: `${backgroundPosition}%`,\n right: `${backgroundPosition}%`,\n transform: `scaleX(${trackPosition})`,\n }}\n />\n </div>\n );\n});\nProgressTracker.displayName = COMPONENT_NAME;\nProgressTracker.className = CLASSNAME;\nProgressTracker.defaultProps = DEFAULT_PROPS;\n","import { FocusEventHandler, KeyboardEventHandler, useCallback } from 'react';\n\nimport classNames from 'classnames';\n\nimport { mdiAlertCircle, mdiCheckCircle, mdiRadioboxBlank, mdiRadioboxMarked } from '@lumx/icons';\nimport { Icon, InputHelper, InputLabel, Kind, Size } from '@lumx/react';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useDisableStateProps } from '@lumx/react/utils/disabled/useDisableStateProps';\nimport { useTabProviderContext } from '../tabs/state';\n\n/**\n * Defines the props of the component.\n */\nexport interface ProgressTrackerStepProps extends GenericProps {\n /** Children are not supported. */\n children?: never;\n /** Whether the step should be in error state or not. */\n hasError?: boolean;\n /** Helper text. */\n helper?: string | null;\n /** Native id property. */\n id?: string;\n /** Whether the current step is active or not. */\n isActive?: boolean;\n /** Whether the current step is completed or not. */\n isComplete?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Label text. */\n label?: string | null;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'ProgressTrackerStep';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<ProgressTrackerStepProps> = {};\n\n/**\n * ProgressTrackerStep component.\n *\n * Implements WAI-ARIA `tab` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const ProgressTrackerStep = forwardRef<ProgressTrackerStepProps, HTMLButtonElement>((props, ref) => {\n const { isAnyDisabled, otherProps } = useDisableStateProps(props);\n const {\n className,\n hasError,\n helper,\n id,\n isActive: propIsActive,\n isComplete,\n label,\n onFocus,\n onKeyPress,\n tabIndex = -1,\n ...forwardedProps\n } = otherProps;\n const state = useTabProviderContext('tab', id);\n const isActive = propIsActive || state?.isActive;\n\n const changeToCurrentTab = useCallback(() => {\n if (isAnyDisabled) {\n return;\n }\n state?.changeToTab();\n }, [isAnyDisabled, state]);\n\n const handleFocus: FocusEventHandler = useCallback(\n (event) => {\n onFocus?.(event);\n if (state?.shouldActivateOnFocus) {\n changeToCurrentTab();\n }\n },\n [changeToCurrentTab, onFocus, state?.shouldActivateOnFocus],\n );\n\n const handleKeyPress: KeyboardEventHandler = useCallback(\n (event) => {\n onKeyPress?.(event);\n if (event.key !== 'Enter') {\n return;\n }\n changeToCurrentTab();\n },\n [changeToCurrentTab, onKeyPress],\n );\n\n const getIcon = (): string => {\n if (isComplete) {\n return mdiCheckCircle;\n }\n\n if (isActive) {\n return hasError ? mdiAlertCircle : mdiRadioboxMarked;\n }\n\n return mdiRadioboxBlank;\n };\n\n return (\n <button\n ref={ref}\n {...forwardedProps}\n type=\"button\"\n id={state?.tabId}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n hasError,\n isActive,\n isClickable: state && !isAnyDisabled,\n isComplete,\n }),\n )}\n onClick={changeToCurrentTab}\n onKeyPress={handleKeyPress}\n onFocus={handleFocus}\n role=\"tab\"\n tabIndex={isActive ? 0 : tabIndex}\n aria-disabled={isAnyDisabled}\n aria-selected={isActive}\n aria-controls={state?.tabPanelId}\n >\n <Icon className={`${CLASSNAME}__state`} icon={getIcon()} size={Size.s} />\n\n <InputLabel htmlFor={state?.tabId || ''} className={`${CLASSNAME}__label`}>\n {label}\n </InputLabel>\n\n {helper && (\n <InputHelper kind={hasError ? Kind.error : Kind.info} className={`${CLASSNAME}__helper`}>\n {helper}\n </InputHelper>\n )}\n </button>\n );\n});\nProgressTrackerStep.displayName = COMPONENT_NAME;\nProgressTrackerStep.className = CLASSNAME;\nProgressTrackerStep.defaultProps = DEFAULT_PROPS;\n","import classNames from 'classnames';\n\nimport { useTabProviderContext } from '@lumx/react/components/tabs/state';\nimport { CSS_PREFIX } from '@lumx/react/constants';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface ProgressTrackerStepPanelProps extends GenericProps {\n /** Native id property. */\n id?: string;\n /** Whether the step is active or not. */\n isActive?: boolean;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'ProgressTrackerStepPanel';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = `${CSS_PREFIX}-step-panel`;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<ProgressTrackerStepPanelProps> = {};\n\n/**\n * ProgressTrackerStepPanel component.\n *\n * Implements WAI-ARIA `tabpanel` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const ProgressTrackerStepPanel = forwardRef<ProgressTrackerStepPanelProps, HTMLDivElement>((props, ref) => {\n const { children, id, className, isActive: propIsActive, ...forwardedProps } = props;\n\n const state = useTabProviderContext('tabPanel', id);\n const isActive = propIsActive || state?.isActive;\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n id={state?.tabPanelId}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, isActive }))}\n role=\"tabpanel\"\n tabIndex={isActive ? 0 : -1}\n aria-labelledby={state?.tabId}\n >\n {(!state?.isLazy || isActive) && children}\n </div>\n );\n});\nProgressTrackerStepPanel.displayName = COMPONENT_NAME;\nProgressTrackerStepPanel.className = CLASSNAME;\nProgressTrackerStepPanel.defaultProps = DEFAULT_PROPS;\n"],"names":["DEFAULT_PROPS","isLazy","INIT_STATE","shouldActivateOnFocus","ProgressTrackerProvider","props","children","onChange","propState","state","dispatch","useReducer","reducer","useEffect","type","payload","activeTabIndex","activeStepIndex","Object","values","_jsx","TabProviderContext","Provider","value","defaultProps","COMPONENT_NAME","CLASSNAME","getRootClassName","ProgressTracker","forwardRef","ref","ariaLabel","className","forwardedProps","stepListRef","React","useRef","useRovingTabIndex","parentRef","elementSelector","keepTabIndex","extraDependencies","useTabProviderContextState","numberOfSteps","ids","tab","length","backgroundPosition","trackPosition","_jsxs","mergeRefs","classNames","role","style","left","right","transform","displayName","ProgressTrackerStep","isAnyDisabled","otherProps","useDisableStateProps","hasError","helper","id","isActive","propIsActive","isComplete","label","onFocus","onKeyPress","tabIndex","useTabProviderContext","changeToCurrentTab","useCallback","changeToTab","handleFocus","event","handleKeyPress","key","getIcon","mdiCheckCircle","mdiAlertCircle","mdiRadioboxMarked","mdiRadioboxBlank","tabId","handleBasicClasses","prefix","isClickable","onClick","tabPanelId","Icon","icon","size","Size","s","InputLabel","htmlFor","InputHelper","kind","Kind","error","info","CSS_PREFIX","ProgressTrackerStepPanel"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"select-a145edbb.js","sources":["../../../src/hooks/useListenFocus.tsx","../../../src/components/select/WithSelectContext.tsx","../../../src/components/select/constants.ts","../../../src/components/select/Select.tsx","../../../src/components/select/SelectMultiple.tsx"],"sourcesContent":["import { RefObject, useEffect, useState } from 'react';\n\n/**\n * Listen on element focus to store the focus status.\n */\nexport function useListenFocus(ref: RefObject<HTMLElement>) {\n const [isFocus, setFocus] = useState(false);\n\n useEffect(() => {\n const { current: element } = ref;\n if (!element) {\n return undefined;\n }\n\n const onFocus = () => setFocus(true);\n const onBlur = () => setFocus(false);\n element.addEventListener('focus', onFocus);\n element.addEventListener('blur', onBlur);\n return () => {\n element.removeEventListener('focus', onFocus);\n element.removeEventListener('blur', onBlur);\n };\n }, [ref, setFocus]);\n\n return isFocus;\n}\n","import classNames from 'classnames';\nimport { Ref, useCallback, useRef } from 'react';\n\nimport { Placement } from '@lumx/react';\nimport { Kind, Theme } from '@lumx/core/js/constants';\nimport { Dropdown } from '@lumx/react/components/dropdown/Dropdown';\nimport { InputHelper } from '@lumx/react/components/input-helper/InputHelper';\nimport { useFocusTrap } from '@lumx/react/hooks/useFocusTrap';\nimport { useListenFocus } from '@lumx/react/hooks/useListenFocus';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\n\nimport { useId } from '@lumx/react/hooks/useId';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { CoreSelectProps } from './constants';\n\n/** The display name of the component. */\nconst COMPONENT_NAME = 'Select';\n\n/** The default class name and classes prefix for this component. */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\nexport const WithSelectContext = (\n SelectElement: React.FC<any>,\n props: CoreSelectProps,\n ref: Ref<HTMLDivElement>,\n): React.ReactElement => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n children,\n className,\n focusElement,\n isMultiple,\n closeOnClick = !isMultiple,\n disabled,\n error,\n hasError,\n helper,\n id,\n isDisabled = disabled,\n isEmpty,\n isOpen,\n isRequired,\n isValid,\n label,\n onClear,\n onDropdownClose,\n onInfiniteScroll,\n onInputClick,\n placeholder,\n theme = defaultTheme,\n value,\n variant,\n ...forwardedProps\n } = props;\n const generatedSelectId = useId();\n const selectId = id || generatedSelectId;\n const anchorRef = useRef<HTMLElement>(null);\n const selectRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const isFocus = useListenFocus(anchorRef);\n\n const handleKeyboardNav = useCallback(\n (evt: React.KeyboardEvent<HTMLElement>) => {\n if ((evt.key === 'Enter' || evt.key === ' ' || evt.key === 'ArrowDown') && onInputClick) {\n evt.preventDefault();\n onInputClick();\n }\n },\n [onInputClick],\n );\n\n const onClose = () => {\n if (onDropdownClose) {\n onDropdownClose();\n }\n anchorRef?.current?.blur();\n };\n\n // Handle focus trap.\n useFocusTrap(isOpen && dropdownRef.current, focusElement?.current);\n\n return (\n <div\n ref={mergeRefs(ref, selectRef)}\n className={classNames(\n className,\n handleBasicClasses({\n hasError,\n hasLabel: Boolean(label),\n hasPlaceholder: Boolean(placeholder),\n hasValue: !isEmpty,\n isDisabled,\n isEmpty,\n isFocus,\n isOpen,\n isValid,\n prefix: CLASSNAME,\n theme: theme === Theme.light ? Theme.light : Theme.dark,\n }),\n )}\n >\n <SelectElement\n {...forwardedProps}\n anchorRef={anchorRef}\n aria-disabled={isDisabled}\n handleKeyboardNav={handleKeyboardNav}\n hasError={hasError}\n isDisabled={isDisabled}\n isEmpty={isEmpty}\n isRequired={isRequired}\n isValid={isValid}\n label={label}\n placeholder={placeholder}\n id={selectId}\n theme={theme}\n value={value}\n variant={variant}\n onClear={onClear}\n onInputClick={onInputClick}\n />\n <Dropdown\n anchorRef={anchorRef}\n closeOnClick={closeOnClick}\n closeOnClickAway\n closeOnEscape\n isOpen={!!isOpen}\n placement={Placement.BOTTOM_START}\n onClose={onClose}\n onInfiniteScroll={onInfiniteScroll}\n ref={dropdownRef}\n >\n {children}\n </Dropdown>\n {hasError && error && (\n <InputHelper className={`${CLASSNAME}__helper`} kind={Kind.error} theme={theme}>\n {error}\n </InputHelper>\n )}\n {helper && (\n <InputHelper className={`${CLASSNAME}__helper`} theme={theme}>\n {helper}\n </InputHelper>\n )}\n </div>\n );\n};\n","import { IconButtonProps } from '@lumx/react';\nimport { GenericProps, HasTheme, ValueOf } from '@lumx/react/utils/type';\nimport { ReactNode, SyntheticEvent } from 'react';\n\n/**\n * Select variants.\n */\nexport const SelectVariant = { input: 'input', chip: 'chip' } as const;\nexport type SelectVariant = ValueOf<typeof SelectVariant>;\n\nexport interface CoreSelectProps extends GenericProps, HasTheme {\n /** Props to pass to the clear button (minus those already set by the Select props). If not specified, the button won't be displayed. */\n clearButtonProps?: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis'>;\n /** Whether the select (input variant) is displayed with error style or not. */\n hasError?: boolean;\n /** Error message. */\n error?: string | ReactNode;\n /** Helper text. */\n helper?: string;\n /** Whether the select should close on click. */\n closeOnClick?: boolean;\n /** Icon (SVG path). */\n icon?: string;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Whether the component is required or not. */\n isRequired?: boolean;\n /** Whether the component is open or not. */\n isOpen?: boolean;\n /** Whether the select (input variant) is displayed with valid style or not. */\n isValid?: boolean;\n /** Label text. */\n label?: string;\n /** Placeholder input text. */\n placeholder?: string;\n /** Select variant. */\n variant?: SelectVariant;\n /** On clear callback. */\n onClear?(event: SyntheticEvent, value?: string): void;\n /** On blur callback. */\n onBlur?(): void;\n /** On filter text change callback (with 500ms debounce). */\n onFilter?(): void;\n /** On input click callback (can be used for dropdown toggle). */\n onInputClick?(): void;\n /** On dropdown close callback. */\n onDropdownClose?(): void;\n /** On scroll end callback. */\n onInfiniteScroll?(): void;\n /** Render value function. Default: Renders the value as a string. */\n selectedValueRender?(choice: string): ReactNode | string;\n /** Children */\n children?: React.ReactNode;\n}\n","import { RefObject } from 'react';\n\nimport classNames from 'classnames';\n\nimport { mdiAlertCircle, mdiCheckCircle, mdiCloseCircle, mdiMenuDown } from '@lumx/icons';\nimport { Emphasis, Size, Theme } from '@lumx/core/js/constants';\nimport { IconButton } from '@lumx/react/components/button/IconButton';\nimport { Chip } from '@lumx/react/components/chip/Chip';\nimport { Icon } from '@lumx/react/components/icon/Icon';\nimport { InputLabel } from '@lumx/react/components/input-label/InputLabel';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { WithSelectContext } from './WithSelectContext';\nimport { CoreSelectProps, SelectVariant } from './constants';\n\n/** Defines the props of the component. */\nexport interface SelectProps extends CoreSelectProps {\n /** Selected value. */\n value: string;\n}\n\nexport { SelectVariant };\n\n/** The display name of the component. */\nconst COMPONENT_NAME = 'Select';\n\n/** The default class name and classes prefix for this component. */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/** The default value of props. */\nconst DEFAULT_PROPS: Partial<SelectProps> = {\n selectedValueRender: (choice) => choice,\n variant: SelectVariant.input,\n};\n\nconst stopPropagation = (evt: Event) => evt.stopPropagation();\n\n/**\n * Select component.\n */\nconst SelectField: React.FC<SelectProps> = (props) => {\n const defaultTheme = useTheme();\n const {\n anchorRef,\n clearButtonProps,\n handleKeyboardNav,\n hasError,\n hasInputClear,\n icon,\n id,\n isDisabled,\n isEmpty,\n isRequired,\n isValid,\n label,\n onClear,\n onInputClick,\n placeholder,\n selectedValueRender,\n theme = defaultTheme,\n value,\n variant,\n selectElementRef,\n ...forwardedProps\n } = props;\n\n return (\n <>\n {variant === SelectVariant.input && (\n <>\n {label && (\n <div className={`${CLASSNAME}__header`}>\n <InputLabel\n htmlFor={id}\n className={`${CLASSNAME}__label`}\n isRequired={isRequired}\n theme={theme}\n >\n {label}\n </InputLabel>\n </div>\n )}\n\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n <div\n ref={mergeRefs(anchorRef as RefObject<HTMLDivElement>, selectElementRef)}\n id={id}\n className={`${CLASSNAME}__wrapper`}\n onClick={onInputClick}\n onKeyDown={handleKeyboardNav}\n tabIndex={isDisabled ? undefined : 0}\n aria-disabled={isDisabled || undefined}\n {...forwardedProps}\n >\n {icon && (\n <Icon\n className={`${CLASSNAME}__input-icon`}\n color={theme === Theme.dark ? 'light' : undefined}\n icon={icon}\n size={Size.xs}\n />\n )}\n\n <div\n className={classNames([\n `${CLASSNAME}__input-native`,\n isEmpty && placeholder && `${CLASSNAME}__input-native--placeholder`,\n ])}\n >\n {!isEmpty && <span>{selectedValueRender?.(value)}</span>}\n\n {isEmpty && placeholder && <span>{placeholder}</span>}\n </div>\n\n {(isValid || hasError) && (\n <div className={`${CLASSNAME}__input-validity`}>\n <Icon icon={isValid ? mdiCheckCircle : mdiAlertCircle} size={Size.xxs} />\n </div>\n )}\n\n {hasInputClear && clearButtonProps && (\n <IconButton\n {...clearButtonProps}\n className={`${CLASSNAME}__input-clear`}\n icon={mdiCloseCircle}\n emphasis={Emphasis.low}\n size={Size.s}\n theme={theme}\n onClick={onClear}\n onKeyDown={stopPropagation}\n />\n )}\n\n <div className={`${CLASSNAME}__input-indicator`}>\n <Icon icon={mdiMenuDown} size={Size.s} />\n </div>\n </div>\n </>\n )}\n\n {variant === SelectVariant.chip && (\n <Chip\n id={id}\n isSelected={!isEmpty}\n isDisabled={isDisabled}\n after={<Icon icon={isEmpty ? mdiMenuDown : mdiCloseCircle} />}\n onAfterClick={isEmpty ? onInputClick : onClear}\n onClick={onInputClick}\n ref={mergeRefs(anchorRef as RefObject<HTMLAnchorElement>, selectElementRef)}\n theme={theme}\n {...forwardedProps}\n >\n {isEmpty && <span>{label}</span>}\n\n {!isEmpty && <span>{selectedValueRender?.(value)}</span>}\n </Chip>\n )}\n </>\n );\n};\n\n/**\n * Select component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Select = forwardRef<SelectProps, HTMLDivElement>((props, ref) => {\n const isEmpty = !props.value;\n const hasInputClear = props.onClear && props.clearButtonProps && !isEmpty;\n\n return WithSelectContext(\n SelectField,\n {\n ...DEFAULT_PROPS,\n ...props,\n className: classNames(\n props.className,\n handleBasicClasses({\n hasInputClear,\n hasUnique: !props.isEmpty,\n prefix: CLASSNAME,\n }),\n ),\n hasInputClear,\n isEmpty,\n },\n ref,\n );\n});\nSelect.displayName = COMPONENT_NAME;\nSelect.className = CLASSNAME;\nSelect.defaultProps = DEFAULT_PROPS;\nSelect.className = CLASSNAME;\n","import { ReactNode, RefObject, SyntheticEvent } from 'react';\n\nimport classNames from 'classnames';\n\nimport { mdiAlertCircle, mdiCheckCircle, mdiClose, mdiCloseCircle, mdiMenuDown } from '@lumx/icons';\nimport { Size, Theme } from '@lumx/core/js/constants';\nimport { Chip } from '@lumx/react/components/chip/Chip';\nimport { Icon } from '@lumx/react/components/icon/Icon';\nimport { InputLabel } from '@lumx/react/components/input-label/InputLabel';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { WithSelectContext } from './WithSelectContext';\nimport { CoreSelectProps, SelectVariant } from './constants';\n\n/** Defines the props of the component. */\nexport interface SelectMultipleProps extends CoreSelectProps {\n /** Selected values. */\n value: string[];\n /** Selected value render function. Default: Renders the value inside of a Chip. */\n selectedChipRender?(\n choice: string,\n index: number,\n onClear?: (event: SyntheticEvent, choice: string) => void,\n isDisabled?: boolean,\n theme?: any,\n ): ReactNode | string;\n}\n\n/** The display name of the component. */\nconst COMPONENT_NAME = 'Select';\n\n/** The default class name and classes prefix for this component. */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/** The default value of props. */\nconst DEFAULT_PROPS: Partial<SelectMultipleProps> = {\n selectedChipRender(choice, index, onClear, isDisabled?, theme?) {\n const onClick = (event: React.MouseEvent) => onClear && onClear(event, choice);\n return (\n <Chip\n key={index}\n after={onClear && <Icon icon={mdiClose} size={Size.xxs} />}\n isDisabled={isDisabled}\n size={Size.s}\n onAfterClick={onClick}\n onClick={onClick}\n theme={theme}\n >\n {choice}\n </Chip>\n );\n },\n selectedValueRender: (choice) => choice,\n variant: SelectVariant.input,\n};\n\nexport const SelectMultipleField: React.FC<SelectMultipleProps> = (props) => {\n const defaultTheme = useTheme();\n const {\n anchorRef,\n handleKeyboardNav,\n hasError,\n icon,\n id,\n isDisabled,\n isEmpty,\n isRequired,\n isValid,\n label,\n onClear,\n onInputClick,\n placeholder,\n selectedChipRender,\n selectedValueRender,\n theme = defaultTheme,\n value,\n variant,\n selectElementRef,\n ...forwardedProps\n } = props;\n\n return (\n <>\n {variant === SelectVariant.input && (\n <>\n {label && (\n <div className={`${CLASSNAME}__header`}>\n <InputLabel\n htmlFor={id}\n className={`${CLASSNAME}__label`}\n isRequired={isRequired}\n theme={theme}\n >\n {label}\n </InputLabel>\n </div>\n )}\n\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n <div\n ref={mergeRefs(anchorRef as RefObject<HTMLDivElement>, selectElementRef)}\n id={id}\n className={`${CLASSNAME}__wrapper`}\n onClick={onInputClick}\n onKeyDown={handleKeyboardNav}\n tabIndex={isDisabled ? undefined : 0}\n aria-disabled={isDisabled || undefined}\n {...forwardedProps}\n >\n {icon && (\n <Icon\n className={`${CLASSNAME}__input-icon`}\n color={theme === Theme.dark ? 'light' : undefined}\n icon={icon}\n size={Size.xs}\n />\n )}\n\n <div className={`${CLASSNAME}__chips`}>\n {!isEmpty &&\n value.map((val, index) => selectedChipRender?.(val, index, onClear, isDisabled, theme))}\n </div>\n\n {isEmpty && placeholder && (\n <div\n className={classNames([\n `${CLASSNAME}__input-native`,\n `${CLASSNAME}__input-native--placeholder`,\n ])}\n >\n <span>{placeholder}</span>\n </div>\n )}\n\n {(isValid || hasError) && (\n <div className={`${CLASSNAME}__input-validity`}>\n <Icon icon={isValid ? mdiCheckCircle : mdiAlertCircle} size={Size.xxs} />\n </div>\n )}\n\n <div className={`${CLASSNAME}__input-indicator`}>\n <Icon icon={mdiMenuDown} size={Size.s} />\n </div>\n </div>\n </>\n )}\n\n {variant === SelectVariant.chip && (\n <Chip\n id={id}\n isSelected={!isEmpty}\n isDisabled={isDisabled}\n after={<Icon icon={isEmpty ? mdiMenuDown : mdiCloseCircle} />}\n onAfterClick={isEmpty ? onInputClick : onClear}\n onClick={onInputClick}\n ref={mergeRefs(anchorRef as RefObject<HTMLAnchorElement>, selectElementRef)}\n theme={theme}\n {...forwardedProps}\n >\n {isEmpty && <span>{label}</span>}\n\n {!isEmpty && (\n <span>\n <span>{selectedValueRender?.(value[0])}</span>\n\n {value.length > 1 && <span>&nbsp;+{value.length - 1}</span>}\n </span>\n )}\n </Chip>\n )}\n </>\n );\n};\n\n/**\n * SelectMultiple component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SelectMultiple = forwardRef<SelectMultipleProps, HTMLDivElement>((props, ref) => {\n return WithSelectContext(\n SelectMultipleField,\n {\n ...DEFAULT_PROPS,\n ...props,\n className: classNames(\n props.className,\n handleBasicClasses({\n hasMultiple: !props.isEmpty,\n prefix: CLASSNAME,\n }),\n ),\n isEmpty: props.value.length === 0,\n isMultiple: true,\n },\n ref,\n );\n});\nSelectMultiple.displayName = COMPONENT_NAME;\nSelectMultiple.className = CLASSNAME;\nSelectMultiple.defaultProps = DEFAULT_PROPS;\n"],"names":["useListenFocus","ref","isFocus","setFocus","useState","useEffect","current","element","undefined","onFocus","onBlur","addEventListener","removeEventListener","COMPONENT_NAME","CLASSNAME","getRootClassName","WithSelectContext","SelectElement","props","defaultTheme","useTheme","Theme","light","children","className","focusElement","isMultiple","closeOnClick","disabled","error","hasError","helper","id","isDisabled","isEmpty","isOpen","isRequired","isValid","label","onClear","onDropdownClose","onInfiniteScroll","onInputClick","placeholder","theme","value","variant","forwardedProps","generatedSelectId","useId","selectId","anchorRef","useRef","selectRef","dropdownRef","handleKeyboardNav","useCallback","evt","key","preventDefault","onClose","blur","useFocusTrap","_jsxs","mergeRefs","classNames","handleBasicClasses","hasLabel","Boolean","hasPlaceholder","hasValue","prefix","dark","_jsx","Dropdown","closeOnClickAway","closeOnEscape","placement","Placement","BOTTOM_START","InputHelper","kind","Kind","SelectVariant","input","chip","DEFAULT_PROPS","selectedValueRender","choice","stopPropagation","SelectField","clearButtonProps","hasInputClear","icon","selectElementRef","_Fragment","InputLabel","htmlFor","onClick","onKeyDown","tabIndex","Icon","color","size","Size","xs","mdiCheckCircle","mdiAlertCircle","xxs","IconButton","mdiCloseCircle","emphasis","Emphasis","low","s","mdiMenuDown","Chip","isSelected","after","onAfterClick","Select","forwardRef","hasUnique","displayName","defaultProps","selectedChipRender","index","event","mdiClose","SelectMultipleField","map","val","length","SelectMultiple","hasMultiple"],"mappings":";;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACO,SAASA,cAAcA,CAACC,GAA2B,EAAE;EACxD,MAAM,CAACC,OAAO,EAAEC,QAAQ,CAAC,GAAGC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAE3CC,EAAAA,SAAS,CAAC,MAAM;IACZ,MAAM;AAAEC,MAAAA,OAAO,EAAEC,OAAAA;AAAQ,KAAC,GAAGN,GAAG,CAAA;IAChC,IAAI,CAACM,OAAO,EAAE;AACV,MAAA,OAAOC,SAAS,CAAA;AACpB,KAAA;AAEA,IAAA,MAAMC,OAAO,GAAGA,MAAMN,QAAQ,CAAC,IAAI,CAAC,CAAA;AACpC,IAAA,MAAMO,MAAM,GAAGA,MAAMP,QAAQ,CAAC,KAAK,CAAC,CAAA;AACpCI,IAAAA,OAAO,CAACI,gBAAgB,CAAC,OAAO,EAAEF,OAAO,CAAC,CAAA;AAC1CF,IAAAA,OAAO,CAACI,gBAAgB,CAAC,MAAM,EAAED,MAAM,CAAC,CAAA;AACxC,IAAA,OAAO,MAAM;AACTH,MAAAA,OAAO,CAACK,mBAAmB,CAAC,OAAO,EAAEH,OAAO,CAAC,CAAA;AAC7CF,MAAAA,OAAO,CAACK,mBAAmB,CAAC,MAAM,EAAEF,MAAM,CAAC,CAAA;KAC9C,CAAA;AACL,GAAC,EAAE,CAACT,GAAG,EAAEE,QAAQ,CAAC,CAAC,CAAA;AAEnB,EAAA,OAAOD,OAAO,CAAA;AAClB;;ACTA;AACA,MAAMW,gBAAc,GAAG,QAAQ,CAAA;;AAE/B;AACA,MAAMC,WAAS,GAAGC,gBAAgB,CAACF,gBAAc,CAAC,CAAA;AAE3C,MAAMG,iBAAiB,GAAGA,CAC7BC,aAA4B,EAC5BC,KAAsB,EACtBjB,GAAwB,KACH;EACrB,MAAMkB,YAAY,GAAGC,QAAQ,EAAE,IAAIC,KAAK,CAACC,KAAK,CAAA;EAC9C,MAAM;IACFC,QAAQ;IACRC,SAAS;IACTC,YAAY;IACZC,UAAU;IACVC,YAAY,GAAG,CAACD,UAAU;IAC1BE,QAAQ;IACRC,KAAK;IACLC,QAAQ;IACRC,MAAM;IACNC,EAAE;AACFC,IAAAA,UAAU,GAAGL,QAAQ;IACrBM,OAAO;IACPC,MAAM;IACNC,UAAU;IACVC,OAAO;IACPC,KAAK;IACLC,OAAO;IACPC,eAAe;IACfC,gBAAgB;IAChBC,YAAY;IACZC,WAAW;AACXC,IAAAA,KAAK,GAAGzB,YAAY;IACpB0B,KAAK;IACLC,OAAO;IACP,GAAGC,cAAAA;AACP,GAAC,GAAG7B,KAAK,CAAA;AACT,EAAA,MAAM8B,iBAAiB,GAAGC,KAAK,EAAE,CAAA;AACjC,EAAA,MAAMC,QAAQ,GAAGlB,EAAE,IAAIgB,iBAAiB,CAAA;AACxC,EAAA,MAAMG,SAAS,GAAGC,MAAM,CAAc,IAAI,CAAC,CAAA;AAC3C,EAAA,MAAMC,SAAS,GAAGD,MAAM,CAAiB,IAAI,CAAC,CAAA;AAC9C,EAAA,MAAME,WAAW,GAAGF,MAAM,CAAiB,IAAI,CAAC,CAAA;AAChD,EAAA,MAAMlD,OAAO,GAAGF,cAAc,CAACmD,SAAS,CAAC,CAAA;AAEzC,EAAA,MAAMI,iBAAiB,GAAGC,WAAW,CAChCC,GAAqC,IAAK;IACvC,IAAI,CAACA,GAAG,CAACC,GAAG,KAAK,OAAO,IAAID,GAAG,CAACC,GAAG,KAAK,GAAG,IAAID,GAAG,CAACC,GAAG,KAAK,WAAW,KAAKhB,YAAY,EAAE;MACrFe,GAAG,CAACE,cAAc,EAAE,CAAA;AACpBjB,MAAAA,YAAY,EAAE,CAAA;AAClB,KAAA;AACJ,GAAC,EACD,CAACA,YAAY,CACjB,CAAC,CAAA;EAED,MAAMkB,OAAO,GAAGA,MAAM;AAClB,IAAA,IAAIpB,eAAe,EAAE;AACjBA,MAAAA,eAAe,EAAE,CAAA;AACrB,KAAA;AACAW,IAAAA,SAAS,EAAE7C,OAAO,EAAEuD,IAAI,EAAE,CAAA;GAC7B,CAAA;;AAED;EACAC,YAAY,CAAC3B,MAAM,IAAImB,WAAW,CAAChD,OAAO,EAAEmB,YAAY,EAAEnB,OAAO,CAAC,CAAA;AAElE,EAAA,oBACIyD,IAAA,CAAA,KAAA,EAAA;AACI9D,IAAAA,GAAG,EAAE+D,SAAS,CAAC/D,GAAG,EAAEoD,SAAS,CAAE;AAC/B7B,IAAAA,SAAS,EAAEyC,UAAU,CACjBzC,SAAS,EACT0C,kBAAkB,CAAC;MACfpC,QAAQ;AACRqC,MAAAA,QAAQ,EAAEC,OAAO,CAAC9B,KAAK,CAAC;AACxB+B,MAAAA,cAAc,EAAED,OAAO,CAACzB,WAAW,CAAC;MACpC2B,QAAQ,EAAE,CAACpC,OAAO;MAClBD,UAAU;MACVC,OAAO;MACPhC,OAAO;MACPiC,MAAM;MACNE,OAAO;AACPkC,MAAAA,MAAM,EAAEzD,WAAS;AACjB8B,MAAAA,KAAK,EAAEA,KAAK,KAAKvB,KAAK,CAACC,KAAK,GAAGD,KAAK,CAACC,KAAK,GAAGD,KAAK,CAACmD,IAAAA;AACvD,KAAC,CACL,CAAE;IAAAjD,QAAA,EAAA,cAEFkD,GAAA,CAACxD,aAAa,EAAA;AAAA,MAAA,GACN8B,cAAc;AAClBI,MAAAA,SAAS,EAAEA,SAAU;AACrB,MAAA,eAAA,EAAelB,UAAW;AAC1BsB,MAAAA,iBAAiB,EAAEA,iBAAkB;AACrCzB,MAAAA,QAAQ,EAAEA,QAAS;AACnBG,MAAAA,UAAU,EAAEA,UAAW;AACvBC,MAAAA,OAAO,EAAEA,OAAQ;AACjBE,MAAAA,UAAU,EAAEA,UAAW;AACvBC,MAAAA,OAAO,EAAEA,OAAQ;AACjBC,MAAAA,KAAK,EAAEA,KAAM;AACbK,MAAAA,WAAW,EAAEA,WAAY;AACzBX,MAAAA,EAAE,EAAEkB,QAAS;AACbN,MAAAA,KAAK,EAAEA,KAAM;AACbC,MAAAA,KAAK,EAAEA,KAAM;AACbC,MAAAA,OAAO,EAAEA,OAAQ;AACjBP,MAAAA,OAAO,EAAEA,OAAQ;AACjBG,MAAAA,YAAY,EAAEA,YAAAA;AAAa,KAC9B,CAAC,eACF+B,GAAA,CAACC,QAAQ,EAAA;AACLvB,MAAAA,SAAS,EAAEA,SAAU;AACrBxB,MAAAA,YAAY,EAAEA,YAAa;MAC3BgD,gBAAgB,EAAA,IAAA;MAChBC,aAAa,EAAA,IAAA;MACbzC,MAAM,EAAE,CAAC,CAACA,MAAO;MACjB0C,SAAS,EAAEC,SAAS,CAACC,YAAa;AAClCnB,MAAAA,OAAO,EAAEA,OAAQ;AACjBnB,MAAAA,gBAAgB,EAAEA,gBAAiB;AACnCxC,MAAAA,GAAG,EAAEqD,WAAY;AAAA/B,MAAAA,QAAA,EAEhBA,QAAAA;KACK,CAAC,EACVO,QAAQ,IAAID,KAAK,iBACd4C,GAAA,CAACO,WAAW,EAAA;MAACxD,SAAS,EAAE,CAAGV,EAAAA,WAAS,CAAW,QAAA,CAAA;MAACmE,IAAI,EAAEC,IAAI,CAACrD,KAAM;AAACe,MAAAA,KAAK,EAAEA,KAAM;AAAArB,MAAAA,QAAA,EAC1EM,KAAAA;AAAK,KACG,CAChB,EACAE,MAAM,iBACH0C,GAAA,CAACO,WAAW,EAAA;MAACxD,SAAS,EAAE,CAAGV,EAAAA,WAAS,CAAW,QAAA,CAAA;AAAC8B,MAAAA,KAAK,EAAEA,KAAM;AAAArB,MAAAA,QAAA,EACxDQ,MAAAA;AAAM,KACE,CAChB,CAAA;AAAA,GACA,CAAC,CAAA;AAEd,CAAC;;AC9ID;AACA;AACA;AACO,MAAMoD,aAAa,GAAG;AAAEC,EAAAA,KAAK,EAAE,OAAO;AAAEC,EAAAA,IAAI,EAAE,MAAA;AAAO;;ACmB5D;AACA,MAAMxE,gBAAc,GAAG,QAAQ,CAAA;;AAE/B;AACA,MAAMC,WAAS,GAAGC,gBAAgB,CAACF,gBAAc,CAAC,CAAA;;AAElD;AACA,MAAMyE,eAAmC,GAAG;EACxCC,mBAAmB,EAAGC,MAAM,IAAKA,MAAM;EACvC1C,OAAO,EAAEqC,aAAa,CAACC,KAAAA;AAC3B,CAAC,CAAA;AAED,MAAMK,eAAe,GAAIhC,GAAU,IAAKA,GAAG,CAACgC,eAAe,EAAE,CAAA;;AAE7D;AACA;AACA;AACA,MAAMC,WAAkC,GAAIxE,KAAK,IAAK;AAClD,EAAA,MAAMC,YAAY,GAAGC,QAAQ,EAAE,CAAA;EAC/B,MAAM;IACF+B,SAAS;IACTwC,gBAAgB;IAChBpC,iBAAiB;IACjBzB,QAAQ;IACR8D,aAAa;IACbC,IAAI;IACJ7D,EAAE;IACFC,UAAU;IACVC,OAAO;IACPE,UAAU;IACVC,OAAO;IACPC,KAAK;IACLC,OAAO;IACPG,YAAY;IACZC,WAAW;IACX4C,mBAAmB;AACnB3C,IAAAA,KAAK,GAAGzB,YAAY;IACpB0B,KAAK;IACLC,OAAO;IACPgD,gBAAgB;IAChB,GAAG/C,cAAAA;AACP,GAAC,GAAG7B,KAAK,CAAA;EAET,oBACI6C,IAAA,CAAAgC,QAAA,EAAA;IAAAxE,QAAA,EAAA,CACKuB,OAAO,KAAKqC,aAAa,CAACC,KAAK,iBAC5BrB,IAAA,CAAAgC,QAAA,EAAA;MAAAxE,QAAA,EAAA,CACKe,KAAK,iBACFmC,GAAA,CAAA,KAAA,EAAA;QAAKjD,SAAS,EAAE,CAAGV,EAAAA,WAAS,CAAW,QAAA,CAAA;QAAAS,QAAA,eACnCkD,GAAA,CAACuB,UAAU,EAAA;AACPC,UAAAA,OAAO,EAAEjE,EAAG;UACZR,SAAS,EAAE,CAAGV,EAAAA,WAAS,CAAU,OAAA,CAAA;AACjCsB,UAAAA,UAAU,EAAEA,UAAW;AACvBQ,UAAAA,KAAK,EAAEA,KAAM;AAAArB,UAAAA,QAAA,EAEZe,KAAAA;SACO,CAAA;OACX,CACR,eAGDyB,IAAA,CAAA,KAAA,EAAA;AACI9D,QAAAA,GAAG,EAAE+D,SAAS,CAACb,SAAS,EAA+B2C,gBAAgB,CAAE;AACzE9D,QAAAA,EAAE,EAAEA,EAAG;QACPR,SAAS,EAAE,CAAGV,EAAAA,WAAS,CAAY,SAAA,CAAA;AACnCoF,QAAAA,OAAO,EAAExD,YAAa;AACtByD,QAAAA,SAAS,EAAE5C,iBAAkB;AAC7B6C,QAAAA,QAAQ,EAAEnE,UAAU,GAAGzB,SAAS,GAAG,CAAE;QACrC,eAAeyB,EAAAA,UAAU,IAAIzB,SAAU;AAAA,QAAA,GACnCuC,cAAc;AAAAxB,QAAAA,QAAA,EAEjBsE,CAAAA,IAAI,iBACDpB,GAAA,CAAC4B,IAAI,EAAA;UACD7E,SAAS,EAAE,CAAGV,EAAAA,WAAS,CAAe,YAAA,CAAA;UACtCwF,KAAK,EAAE1D,KAAK,KAAKvB,KAAK,CAACmD,IAAI,GAAG,OAAO,GAAGhE,SAAU;AAClDqF,UAAAA,IAAI,EAAEA,IAAK;UACXU,IAAI,EAAEC,IAAI,CAACC,EAAAA;SACd,CACJ,eAED1C,IAAA,CAAA,KAAA,EAAA;AACIvC,UAAAA,SAAS,EAAEyC,UAAU,CAAC,CAClB,CAAA,EAAGnD,WAAS,CAAgB,cAAA,CAAA,EAC5BoB,OAAO,IAAIS,WAAW,IAAI,CAAA,EAAG7B,WAAS,CAAA,2BAAA,CAA6B,CACtE,CAAE;AAAAS,UAAAA,QAAA,EAEF,CAAA,CAACW,OAAO,iBAAIuC,GAAA,CAAA,MAAA,EAAA;YAAAlD,QAAA,EAAOgE,mBAAmB,GAAG1C,KAAK,CAAA;AAAC,WAAO,CAAC,EAEvDX,OAAO,IAAIS,WAAW,iBAAI8B,GAAA,CAAA,MAAA,EAAA;AAAAlD,YAAAA,QAAA,EAAOoB,WAAAA;AAAW,WAAO,CAAC,CAAA;AAAA,SACpD,CAAC,EAEL,CAACN,OAAO,IAAIP,QAAQ,kBACjB2C,GAAA,CAAA,KAAA,EAAA;UAAKjD,SAAS,EAAE,CAAGV,EAAAA,WAAS,CAAmB,gBAAA,CAAA;UAAAS,QAAA,eAC3CkD,GAAA,CAAC4B,IAAI,EAAA;AAACR,YAAAA,IAAI,EAAExD,OAAO,GAAGqE,cAAc,GAAGC,cAAe;YAACJ,IAAI,EAAEC,IAAI,CAACI,GAAAA;WAAM,CAAA;SACvE,CACR,EAEAhB,aAAa,IAAID,gBAAgB,iBAC9BlB,GAAA,CAACoC,UAAU,EAAA;AAAA,UAAA,GACHlB,gBAAgB;UACpBnE,SAAS,EAAE,CAAGV,EAAAA,WAAS,CAAgB,aAAA,CAAA;AACvC+E,UAAAA,IAAI,EAAEiB,cAAe;UACrBC,QAAQ,EAAEC,QAAQ,CAACC,GAAI;UACvBV,IAAI,EAAEC,IAAI,CAACU,CAAE;AACbtE,UAAAA,KAAK,EAAEA,KAAM;AACbsD,UAAAA,OAAO,EAAE3D,OAAQ;AACjB4D,UAAAA,SAAS,EAAEV,eAAAA;SACd,CACJ,eAEDhB,GAAA,CAAA,KAAA,EAAA;UAAKjD,SAAS,EAAE,CAAGV,EAAAA,WAAS,CAAoB,iBAAA,CAAA;UAAAS,QAAA,eAC5CkD,GAAA,CAAC4B,IAAI,EAAA;AAACR,YAAAA,IAAI,EAAEsB,WAAY;YAACZ,IAAI,EAAEC,IAAI,CAACU,CAAAA;WAAI,CAAA;AAAC,SACxC,CAAC,CAAA;AAAA,OACL,CAAC,CAAA;KACR,CACL,EAEApE,OAAO,KAAKqC,aAAa,CAACE,IAAI,iBAC3BtB,IAAA,CAACqD,IAAI,EAAA;AACDpF,MAAAA,EAAE,EAAEA,EAAG;MACPqF,UAAU,EAAE,CAACnF,OAAQ;AACrBD,MAAAA,UAAU,EAAEA,UAAW;MACvBqF,KAAK,eAAE7C,GAAA,CAAC4B,IAAI,EAAA;AAACR,QAAAA,IAAI,EAAE3D,OAAO,GAAGiF,WAAW,GAAGL,cAAAA;AAAe,OAAE,CAAE;AAC9DS,MAAAA,YAAY,EAAErF,OAAO,GAAGQ,YAAY,GAAGH,OAAQ;AAC/C2D,MAAAA,OAAO,EAAExD,YAAa;AACtBzC,MAAAA,GAAG,EAAE+D,SAAS,CAACb,SAAS,EAAkC2C,gBAAgB,CAAE;AAC5ElD,MAAAA,KAAK,EAAEA,KAAM;AAAA,MAAA,GACTG,cAAc;MAAAxB,QAAA,EAAA,CAEjBW,OAAO,iBAAIuC,GAAA,CAAA,MAAA,EAAA;AAAAlD,QAAAA,QAAA,EAAOe,KAAAA;AAAK,OAAO,CAAC,EAE/B,CAACJ,OAAO,iBAAIuC,GAAA,CAAA,MAAA,EAAA;QAAAlD,QAAA,EAAOgE,mBAAmB,GAAG1C,KAAK,CAAA;AAAC,OAAO,CAAC,CAAA;AAAA,KACtD,CACT,CAAA;AAAA,GACH,CAAC,CAAA;AAEX,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM2E,MAAM,GAAGC,UAAU,CAA8B,CAACvG,KAAK,EAAEjB,GAAG,KAAK;AAC1E,EAAA,MAAMiC,OAAO,GAAG,CAAChB,KAAK,CAAC2B,KAAK,CAAA;EAC5B,MAAM+C,aAAa,GAAG1E,KAAK,CAACqB,OAAO,IAAIrB,KAAK,CAACyE,gBAAgB,IAAI,CAACzD,OAAO,CAAA;EAEzE,OAAOlB,iBAAiB,CACpB0E,WAAW,EACX;AACI,IAAA,GAAGJ,eAAa;AAChB,IAAA,GAAGpE,KAAK;IACRM,SAAS,EAAEyC,UAAU,CACjB/C,KAAK,CAACM,SAAS,EACf0C,kBAAkB,CAAC;MACf0B,aAAa;AACb8B,MAAAA,SAAS,EAAE,CAACxG,KAAK,CAACgB,OAAO;AACzBqC,MAAAA,MAAM,EAAEzD,WAAAA;AACZ,KAAC,CACL,CAAC;IACD8E,aAAa;AACb1D,IAAAA,OAAAA;GACH,EACDjC,GACJ,CAAC,CAAA;AACL,CAAC,EAAC;AACFuH,MAAM,CAACG,WAAW,GAAG9G,gBAAc,CAAA;AACnC2G,MAAM,CAAChG,SAAS,GAAGV,WAAS,CAAA;AAC5B0G,MAAM,CAACI,YAAY,GAAGtC,eAAa,CAAA;AACnCkC,MAAM,CAAChG,SAAS,GAAGV,WAAS;;ACtK5B;AACA,MAAMD,cAAc,GAAG,QAAQ,CAAA;;AAE/B;AACA,MAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAc,CAAC,CAAA;;AAElD;AACA,MAAMyE,aAA2C,GAAG;EAChDuC,kBAAkBA,CAACrC,MAAM,EAAEsC,KAAK,EAAEvF,OAAO,EAAEN,UAAW,EAAEW,KAAM,EAAE;IAC5D,MAAMsD,OAAO,GAAI6B,KAAuB,IAAKxF,OAAO,IAAIA,OAAO,CAACwF,KAAK,EAAEvC,MAAM,CAAC,CAAA;IAC9E,oBACIf,GAAA,CAAC2C,IAAI,EAAA;AAEDE,MAAAA,KAAK,EAAE/E,OAAO,iBAAIkC,GAAA,CAAC4B,IAAI,EAAA;AAACR,QAAAA,IAAI,EAAEmC,QAAS;QAACzB,IAAI,EAAEC,IAAI,CAACI,GAAAA;AAAI,OAAE,CAAE;AAC3D3E,MAAAA,UAAU,EAAEA,UAAW;MACvBsE,IAAI,EAAEC,IAAI,CAACU,CAAE;AACbK,MAAAA,YAAY,EAAErB,OAAQ;AACtBA,MAAAA,OAAO,EAAEA,OAAQ;AACjBtD,MAAAA,KAAK,EAAEA,KAAM;AAAArB,MAAAA,QAAA,EAEZiE,MAAAA;AAAM,KAAA,EARFsC,KASH,CAAC,CAAA;GAEd;EACDvC,mBAAmB,EAAGC,MAAM,IAAKA,MAAM;EACvC1C,OAAO,EAAEqC,aAAa,CAACC,KAAAA;AAC3B,CAAC,CAAA;AAEY6C,MAAAA,mBAAkD,GAAI/G,KAAK,IAAK;AACzE,EAAA,MAAMC,YAAY,GAAGC,QAAQ,EAAE,CAAA;EAC/B,MAAM;IACF+B,SAAS;IACTI,iBAAiB;IACjBzB,QAAQ;IACR+D,IAAI;IACJ7D,EAAE;IACFC,UAAU;IACVC,OAAO;IACPE,UAAU;IACVC,OAAO;IACPC,KAAK;IACLC,OAAO;IACPG,YAAY;IACZC,WAAW;IACXkF,kBAAkB;IAClBtC,mBAAmB;AACnB3C,IAAAA,KAAK,GAAGzB,YAAY;IACpB0B,KAAK;IACLC,OAAO;IACPgD,gBAAgB;IAChB,GAAG/C,cAAAA;AACP,GAAC,GAAG7B,KAAK,CAAA;EAET,oBACI6C,IAAA,CAAAgC,QAAA,EAAA;IAAAxE,QAAA,EAAA,CACKuB,OAAO,KAAKqC,aAAa,CAACC,KAAK,iBAC5BrB,IAAA,CAAAgC,QAAA,EAAA;MAAAxE,QAAA,EAAA,CACKe,KAAK,iBACFmC,GAAA,CAAA,KAAA,EAAA;QAAKjD,SAAS,EAAE,CAAGV,EAAAA,SAAS,CAAW,QAAA,CAAA;QAAAS,QAAA,eACnCkD,GAAA,CAACuB,UAAU,EAAA;AACPC,UAAAA,OAAO,EAAEjE,EAAG;UACZR,SAAS,EAAE,CAAGV,EAAAA,SAAS,CAAU,OAAA,CAAA;AACjCsB,UAAAA,UAAU,EAAEA,UAAW;AACvBQ,UAAAA,KAAK,EAAEA,KAAM;AAAArB,UAAAA,QAAA,EAEZe,KAAAA;SACO,CAAA;OACX,CACR,eAGDyB,IAAA,CAAA,KAAA,EAAA;AACI9D,QAAAA,GAAG,EAAE+D,SAAS,CAACb,SAAS,EAA+B2C,gBAAgB,CAAE;AACzE9D,QAAAA,EAAE,EAAEA,EAAG;QACPR,SAAS,EAAE,CAAGV,EAAAA,SAAS,CAAY,SAAA,CAAA;AACnCoF,QAAAA,OAAO,EAAExD,YAAa;AACtByD,QAAAA,SAAS,EAAE5C,iBAAkB;AAC7B6C,QAAAA,QAAQ,EAAEnE,UAAU,GAAGzB,SAAS,GAAG,CAAE;QACrC,eAAeyB,EAAAA,UAAU,IAAIzB,SAAU;AAAA,QAAA,GACnCuC,cAAc;AAAAxB,QAAAA,QAAA,EAEjBsE,CAAAA,IAAI,iBACDpB,GAAA,CAAC4B,IAAI,EAAA;UACD7E,SAAS,EAAE,CAAGV,EAAAA,SAAS,CAAe,YAAA,CAAA;UACtCwF,KAAK,EAAE1D,KAAK,KAAKvB,KAAK,CAACmD,IAAI,GAAG,OAAO,GAAGhE,SAAU;AAClDqF,UAAAA,IAAI,EAAEA,IAAK;UACXU,IAAI,EAAEC,IAAI,CAACC,EAAAA;SACd,CACJ,eAEDhC,GAAA,CAAA,KAAA,EAAA;UAAKjD,SAAS,EAAE,CAAGV,EAAAA,SAAS,CAAU,OAAA,CAAA;UAAAS,QAAA,EACjC,CAACW,OAAO,IACLW,KAAK,CAACqF,GAAG,CAAC,CAACC,GAAG,EAAEL,KAAK,KAAKD,kBAAkB,GAAGM,GAAG,EAAEL,KAAK,EAAEvF,OAAO,EAAEN,UAAU,EAAEW,KAAK,CAAC,CAAA;AAAC,SAC1F,CAAC,EAELV,OAAO,IAAIS,WAAW,iBACnB8B,GAAA,CAAA,KAAA,EAAA;AACIjD,UAAAA,SAAS,EAAEyC,UAAU,CAAC,CAClB,CAAGnD,EAAAA,SAAS,CAAgB,cAAA,CAAA,EAC5B,CAAGA,EAAAA,SAAS,CAA6B,2BAAA,CAAA,CAC5C,CAAE;AAAAS,UAAAA,QAAA,eAEHkD,GAAA,CAAA,MAAA,EAAA;AAAAlD,YAAAA,QAAA,EAAOoB,WAAAA;WAAkB,CAAA;AAAC,SACzB,CACR,EAEA,CAACN,OAAO,IAAIP,QAAQ,kBACjB2C,GAAA,CAAA,KAAA,EAAA;UAAKjD,SAAS,EAAE,CAAGV,EAAAA,SAAS,CAAmB,gBAAA,CAAA;UAAAS,QAAA,eAC3CkD,GAAA,CAAC4B,IAAI,EAAA;AAACR,YAAAA,IAAI,EAAExD,OAAO,GAAGqE,cAAc,GAAGC,cAAe;YAACJ,IAAI,EAAEC,IAAI,CAACI,GAAAA;WAAM,CAAA;SACvE,CACR,eAEDnC,GAAA,CAAA,KAAA,EAAA;UAAKjD,SAAS,EAAE,CAAGV,EAAAA,SAAS,CAAoB,iBAAA,CAAA;UAAAS,QAAA,eAC5CkD,GAAA,CAAC4B,IAAI,EAAA;AAACR,YAAAA,IAAI,EAAEsB,WAAY;YAACZ,IAAI,EAAEC,IAAI,CAACU,CAAAA;WAAI,CAAA;AAAC,SACxC,CAAC,CAAA;AAAA,OACL,CAAC,CAAA;KACR,CACL,EAEApE,OAAO,KAAKqC,aAAa,CAACE,IAAI,iBAC3BtB,IAAA,CAACqD,IAAI,EAAA;AACDpF,MAAAA,EAAE,EAAEA,EAAG;MACPqF,UAAU,EAAE,CAACnF,OAAQ;AACrBD,MAAAA,UAAU,EAAEA,UAAW;MACvBqF,KAAK,eAAE7C,GAAA,CAAC4B,IAAI,EAAA;AAACR,QAAAA,IAAI,EAAE3D,OAAO,GAAGiF,WAAW,GAAGL,cAAAA;AAAe,OAAE,CAAE;AAC9DS,MAAAA,YAAY,EAAErF,OAAO,GAAGQ,YAAY,GAAGH,OAAQ;AAC/C2D,MAAAA,OAAO,EAAExD,YAAa;AACtBzC,MAAAA,GAAG,EAAE+D,SAAS,CAACb,SAAS,EAAkC2C,gBAAgB,CAAE;AAC5ElD,MAAAA,KAAK,EAAEA,KAAM;AAAA,MAAA,GACTG,cAAc;MAAAxB,QAAA,EAAA,CAEjBW,OAAO,iBAAIuC,GAAA,CAAA,MAAA,EAAA;AAAAlD,QAAAA,QAAA,EAAOe,KAAAA;AAAK,OAAO,CAAC,EAE/B,CAACJ,OAAO,iBACL6B,IAAA,CAAA,MAAA,EAAA;AAAAxC,QAAAA,QAAA,gBACIkD,GAAA,CAAA,MAAA,EAAA;AAAAlD,UAAAA,QAAA,EAAOgE,mBAAmB,GAAG1C,KAAK,CAAC,CAAC,CAAC,CAAA;SAAQ,CAAC,EAE7CA,KAAK,CAACuF,MAAM,GAAG,CAAC,iBAAIrE,IAAA,CAAA,MAAA,EAAA;AAAAxC,UAAAA,QAAA,GAAM,OAAO,EAACsB,KAAK,CAACuF,MAAM,GAAG,CAAC,CAAA;AAAA,SAAO,CAAC,CAAA;AAAA,OACzD,CACT,CAAA;AAAA,KACC,CACT,CAAA;AAAA,GACH,CAAC,CAAA;AAEX,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,cAAc,GAAGZ,UAAU,CAAsC,CAACvG,KAAK,EAAEjB,GAAG,KAAK;EAC1F,OAAOe,iBAAiB,CACpBiH,mBAAmB,EACnB;AACI,IAAA,GAAG3C,aAAa;AAChB,IAAA,GAAGpE,KAAK;IACRM,SAAS,EAAEyC,UAAU,CACjB/C,KAAK,CAACM,SAAS,EACf0C,kBAAkB,CAAC;AACfoE,MAAAA,WAAW,EAAE,CAACpH,KAAK,CAACgB,OAAO;AAC3BqC,MAAAA,MAAM,EAAEzD,SAAAA;AACZ,KAAC,CACL,CAAC;AACDoB,IAAAA,OAAO,EAAEhB,KAAK,CAAC2B,KAAK,CAACuF,MAAM,KAAK,CAAC;AACjC1G,IAAAA,UAAU,EAAE,IAAA;GACf,EACDzB,GACJ,CAAC,CAAA;AACL,CAAC,EAAC;AACFoI,cAAc,CAACV,WAAW,GAAG9G,cAAc,CAAA;AAC3CwH,cAAc,CAAC7G,SAAS,GAAGV,SAAS,CAAA;AACpCuH,cAAc,CAACT,YAAY,GAAGtC,aAAa;;;;"}