@chayns-components/core 5.4.5-alpha.0 → 5.4.6-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/slider-button/SliderButton.js +1 -1
- package/lib/cjs/components/slider-button/SliderButton.js.map +1 -1
- package/lib/cjs/components/slider-button/useSliderButtonPopupKeyboard.js +1 -1
- package/lib/cjs/components/slider-button/useSliderButtonPopupKeyboard.js.map +1 -1
- package/lib/esm/components/slider-button/SliderButton.js +1 -1
- package/lib/esm/components/slider-button/SliderButton.js.map +1 -1
- package/lib/esm/components/slider-button/useSliderButtonPopupKeyboard.js +1 -1
- package/lib/esm/components/slider-button/useSliderButtonPopupKeyboard.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderButton.js","names":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_element","_useKeyboardFocusHighlighting","_ColorSchemeProvider","_calculate","_sliderButton","_Icon","_interopRequireDefault","_Popup","_SliderButton","_styledComponents","_useSliderButtonPopupKeyboard","_useSliderButtonThumbKeyboard","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SliderButton","isDisabled","isSecondary","items","onChange","selectedButtonId","isRounded","shouldEnableKeyboardHighlighting","dragRange","setDragRange","useState","left","right","shownItemsCount","setShownItemsCount","length","sliderSize","setSliderSize","width","currentId","setCurrentId","currentPopupId","setCurrentPopupId","currentIndex","setCurrentIndex","isPopupOpen","setIsPopupOpen","sliderButtonRef","useRef","sliderButtonWrapperRef","popupRef","popupItemRefs","scope","animate","useAnimate","theme","useTheme","colorScheme","useColorScheme","shouldEnableKeyboardHighlightingEffective","shouldShowKeyboardHighlighting","useKeyboardFocusHighlighting","initialItemWidth","useMemo","calculateBiggestWidth","elementSize","useElementSize","useEffect","setPopupId","useCallback","selectedId","ids","slice","map","id","newId","find","isSliderBigger","Math","floor","maxShownItemsCount","totalWidth","count","visibleItems","currentMaxWidth","itemWidth","sliderWidth","itemCount","animation","x","current","type","duration","setItemPosition","index","findIndex","handleClick","otherItem","_","indexOf","show","hide","backgroundColor","color","buttonBackgroundColor","buttonDesign","thumbBackgroundColor","popupItems","focusThumb","_sliderButtonRef$curr","thumb","querySelector","focus","handlePopupKeyDown","useSliderButtonPopupKeyboard","onSelectPopupItem","handleThumbKeyDown","useSliderButtonThumbKeyboard","onSelectThumbItem","buttons","newItems","otherItems","elements","text","createElement","StyledSliderButtonItem","$isSecondary","$width","key","onClick","popupContent","popupIndex","StyledSliderButtonPopupContentItem","onKeyDown","ref","element","tabIndex","role","$isSelected","push","onShow","onHide","content","StyledSliderButtonPopupContent","icons","pseudoButtons","snapPoints","points","handleDragStart","setRefreshScrollEnabled","handleDragEnd","position","getThumbPosition","middle","scrollLeft","getNearestPoint","nearestPoint","nearestIndex","hasMoreItems","_items$nearestIndex","StyledSliderButton","$isDisabled","StyledSliderButtonButtonsWrapper","$isInvisible","StyledMotionSliderButtonThumb","$isRounded","drag","dragElastic","dragConstraints","onDragEnd","onDragStart","style","undefined","$shouldShowKeyboardHighlighting","StyledSliderButtonWrapper","AnimatePresence","displayName","_default","exports"],"sources":["../../../../src/components/slider-button/SliderButton.tsx"],"sourcesContent":["import { setRefreshScrollEnabled } from 'chayns-api';\nimport { AnimatePresence, useAnimate } from 'motion/react';\nimport React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useElementSize } from '../../hooks/element';\nimport { useKeyboardFocusHighlighting } from '../../hooks/useKeyboardFocusHighlighting';\nimport { useColorScheme } from '../color-scheme-provider/ColorSchemeProvider';\nimport { PopupRef } from '../../types/popup';\nimport { calculateBiggestWidth } from '../../utils/calculate';\nimport { getNearestPoint, getThumbPosition } from '../../utils/sliderButton';\nimport Icon from '../icon/Icon';\nimport Popup from '../popup/Popup';\nimport {\n StyledMotionSliderButtonThumb,\n StyledSliderButton,\n StyledSliderButtonButtonsWrapper,\n StyledSliderButtonItem,\n StyledSliderButtonPopupContent,\n StyledSliderButtonPopupContentItem,\n StyledSliderButtonWrapper,\n} from './SliderButton.styles';\nimport { useTheme } from 'styled-components';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\nimport { SliderButtonProps } from './SliderButton.types';\nimport { useSliderButtonPopupKeyboard } from './useSliderButtonPopupKeyboard';\nimport { useSliderButtonThumbKeyboard } from './useSliderButtonThumbKeyboard';\n\nconst SliderButton: FC<SliderButtonProps> = ({\n isDisabled,\n isSecondary,\n items,\n onChange,\n selectedButtonId,\n isRounded = false,\n shouldEnableKeyboardHighlighting,\n}) => {\n const [dragRange, setDragRange] = useState({ left: 0, right: 0 });\n const [shownItemsCount, setShownItemsCount] = useState(items.length);\n const [sliderSize, setSliderSize] = useState({ width: 0 });\n const [currentId, setCurrentId] = useState('');\n const [currentPopupId, setCurrentPopupId] = useState('');\n const [currentIndex, setCurrentIndex] = useState(0);\n const [isPopupOpen, setIsPopupOpen] = useState(false);\n\n const sliderButtonRef = useRef<HTMLDivElement>(null);\n const sliderButtonWrapperRef = useRef<HTMLDivElement>(null);\n const popupRef = useRef<PopupRef>(null);\n const popupItemRefs = useRef<Array<HTMLDivElement | null>>([]);\n\n const [scope, animate] = useAnimate();\n\n const theme = useTheme() as Theme;\n const colorScheme = useColorScheme();\n const shouldEnableKeyboardHighlightingEffective =\n shouldEnableKeyboardHighlighting ?? colorScheme?.shouldEnableKeyboardHighlighting ?? false;\n\n const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(\n shouldEnableKeyboardHighlightingEffective && !isDisabled,\n );\n\n const initialItemWidth = useMemo(() => calculateBiggestWidth(items), [items]);\n const elementSize = useElementSize(sliderButtonRef);\n\n useEffect(() => {\n if (elementSize) setSliderSize(elementSize);\n }, [elementSize]);\n\n const setPopupId = useCallback(\n (selectedId: string) => {\n const ids = items.slice(shownItemsCount - 1).map(({ id }) => id);\n\n const newId = ids.find((id) => id === selectedId);\n\n if (newId) {\n setCurrentId('more');\n setCurrentPopupId(newId);\n\n return;\n }\n\n setCurrentId(selectedId);\n },\n [items, shownItemsCount],\n );\n\n const isSliderBigger = useMemo(\n () => sliderSize && Math.floor(sliderSize.width / initialItemWidth) < items.length - 1,\n [initialItemWidth, items.length, sliderSize],\n );\n\n const maxShownItemsCount = useMemo(() => {\n let totalWidth = 0;\n let count = 0;\n\n while (count < items.length) {\n const visibleItems = items.slice(0, count + 1);\n const currentMaxWidth = calculateBiggestWidth(visibleItems) + 8;\n\n if (totalWidth + currentMaxWidth > sliderSize.width) break;\n\n totalWidth += currentMaxWidth;\n count++;\n }\n\n return count;\n }, [items, sliderSize.width]);\n\n const itemWidth = useMemo(() => {\n const sliderWidth = sliderSize?.width || 0;\n const itemCount = items.length || 1;\n\n setShownItemsCount(isSliderBigger ? maxShownItemsCount : itemCount);\n\n return sliderWidth / (isSliderBigger ? maxShownItemsCount : itemCount);\n }, [isSliderBigger, items.length, maxShownItemsCount, sliderSize?.width]);\n\n useEffect(() => {\n if (sliderSize) {\n const sliderWidth = itemWidth * (items.length - 1);\n\n const count = Math.floor(sliderSize.width / itemWidth);\n\n setDragRange({ left: 0, right: isSliderBigger ? itemWidth * count : sliderWidth });\n }\n }, [isSliderBigger, itemWidth, items.length, sliderSize]);\n\n const animation = useCallback(\n async (x: number) => {\n await animate(\n scope.current,\n { x },\n {\n type: 'tween',\n duration: 0.2,\n },\n );\n },\n [animate, scope],\n );\n\n const setItemPosition = useCallback(\n (index: number) => {\n setCurrentIndex(index);\n\n void animation(itemWidth * index);\n },\n [animation, itemWidth],\n );\n\n useEffect(() => {\n if (typeof selectedButtonId === 'string') {\n let index = items.findIndex(({ id }) => id === selectedButtonId);\n\n setCurrentId(selectedButtonId);\n\n setPopupId(selectedButtonId);\n\n if (items.length > shownItemsCount && index > shownItemsCount - 1) {\n index = shownItemsCount - 1;\n }\n\n if (index >= 0) {\n setItemPosition(index);\n }\n }\n }, [\n animation,\n dragRange.right,\n isSliderBigger,\n itemWidth,\n items,\n selectedButtonId,\n setItemPosition,\n setPopupId,\n shownItemsCount,\n ]);\n\n const handleClick = useCallback(\n (id: string, index: number) => {\n if (isDisabled) {\n return;\n }\n\n if (currentIndex === index && items.length === 2) {\n const otherItem = items.find((_, findIndex) => index !== findIndex);\n if (!otherItem) return;\n\n setPopupId(otherItem.id);\n setItemPosition(items.indexOf(otherItem));\n onChange?.(otherItem.id);\n return;\n }\n\n setPopupId(id);\n\n if (typeof onChange === 'function' && id !== 'more') {\n onChange(id);\n }\n\n if (popupRef.current) {\n if (id === 'more') {\n popupRef.current.show();\n } else {\n popupRef.current.hide();\n }\n }\n\n setItemPosition(index);\n },\n [currentIndex, isDisabled, items, onChange, setItemPosition, setPopupId],\n );\n\n const backgroundColor = useMemo(() => {\n let color;\n\n if (isSecondary) {\n color = theme['202'];\n } else {\n color = theme.buttonBackgroundColor ?? theme['408'];\n }\n\n if (theme.buttonDesign === '2') {\n color = `rgba(${theme['102-rgb'] ?? ''}, 0)`;\n }\n\n return color;\n }, [isSecondary, theme]);\n\n const thumbBackgroundColor = useMemo(() => {\n let color;\n\n if (isSecondary) {\n color = theme['207'];\n } else {\n color = `rgba(${theme['405-rgb'] ?? ''}, 0.75)`;\n }\n\n if (theme.buttonDesign === '2') {\n color = `rgba(${theme['102-rgb'] ?? ''}, 0)`;\n }\n\n return color;\n }, [isSecondary, theme]);\n\n const popupItems = useMemo(() => items.slice(shownItemsCount - 1), [items, shownItemsCount]);\n\n const focusThumb = useCallback(() => {\n const thumb = sliderButtonRef.current?.querySelector(\n '[data-slider-button-thumb=\"true\"]',\n ) as HTMLDivElement | null;\n\n thumb?.focus();\n }, []);\n\n const { handlePopupKeyDown } = useSliderButtonPopupKeyboard({\n isPopupOpen,\n popupItems,\n currentPopupId,\n shownItemsCount,\n popupItemRefs,\n popupRef,\n focusThumb,\n onSelectPopupItem: handleClick,\n });\n\n const { handleThumbKeyDown } = useSliderButtonThumbKeyboard({\n currentId,\n currentIndex,\n shownItemsCount,\n items,\n onSelectThumbItem: handleClick,\n });\n\n const buttons = useMemo(() => {\n if (items.length > shownItemsCount) {\n const newItems = items.slice(0, shownItemsCount - 1);\n const otherItems = items.slice(shownItemsCount - 1);\n\n const elements = newItems.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n\n const popupContent = otherItems.map(({ id, text }, popupIndex) => (\n <StyledSliderButtonPopupContentItem\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, newItems.length)}\n onKeyDown={handlePopupKeyDown}\n ref={(element: HTMLDivElement | null) => {\n popupItemRefs.current[popupIndex] = element;\n }}\n tabIndex={0}\n role=\"button\"\n $isSelected={id === currentPopupId}\n >\n {text}\n </StyledSliderButtonPopupContentItem>\n ));\n\n const id = 'more';\n\n elements.push(\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n >\n <Popup\n ref={popupRef}\n onShow={() => {\n setIsPopupOpen(true);\n }}\n onHide={() => {\n setIsPopupOpen(false);\n popupItemRefs.current = [];\n }}\n content={\n <StyledSliderButtonPopupContent onKeyDown={handlePopupKeyDown}>\n {popupContent}\n </StyledSliderButtonPopupContent>\n }\n >\n <Icon icons={['fa fa-ellipsis']} color=\"white\" />\n </Popup>\n </StyledSliderButtonItem>,\n );\n\n return elements;\n }\n return items.map(({ id, text }) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [\n currentPopupId,\n handleClick,\n handlePopupKeyDown,\n isSecondary,\n itemWidth,\n items,\n shownItemsCount,\n ]);\n\n const pseudoButtons = useMemo(() => {\n if (items.length > shownItemsCount) {\n const newItems = items.slice(0, shownItemsCount - 1);\n\n const elements = newItems.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n\n const id = 'more';\n\n elements.push(\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, newItems.length)}\n >\n <Icon icons={['fa fa-ellipsis']} />\n </StyledSliderButtonItem>,\n );\n\n return elements;\n }\n return items.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [handleClick, isSecondary, itemWidth, items, shownItemsCount]);\n\n /**\n * Creates an array with the snap points relative to the width of the items\n */\n const snapPoints = useMemo(() => {\n const points = [0];\n\n for (let i = 1; i < items.length; i++) {\n points.push(itemWidth * i);\n }\n\n return points;\n }, [itemWidth, items.length]);\n\n const handleDragStart = useCallback(() => {\n void setRefreshScrollEnabled(false);\n }, []);\n\n const handleDragEnd = useCallback(() => {\n void setRefreshScrollEnabled(true);\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle, left } = position;\n\n let scrollLeft = 0;\n\n if (sliderButtonWrapperRef.current) {\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n\n sliderButtonWrapperRef.current.scrollLeft = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: scrollLeft - left,\n }).nearestPoint;\n }\n\n const { nearestIndex } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft,\n });\n\n const { nearestPoint } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: 0,\n });\n const hasMoreItems = items.length > shownItemsCount;\n\n if (nearestPoint >= 0 && nearestIndex >= 0) {\n void animation(nearestPoint);\n\n let id;\n\n if (hasMoreItems && nearestIndex === shownItemsCount - 1) {\n id = 'more';\n } else {\n id = items[nearestIndex]?.id;\n }\n\n if (popupRef.current) {\n if (id === 'more') {\n popupRef.current.show();\n } else {\n popupRef.current.hide();\n }\n }\n\n if (typeof onChange === 'function' && id) {\n setPopupId(id);\n setCurrentIndex(nearestIndex);\n if (id !== 'more') onChange(id);\n }\n }\n }, [animation, itemWidth, items, onChange, scope, setPopupId, shownItemsCount, snapPoints]);\n\n return useMemo(\n () => (\n <StyledSliderButton $isDisabled={isDisabled} ref={sliderButtonRef}>\n <StyledSliderButtonButtonsWrapper $isInvisible>\n {pseudoButtons}\n </StyledSliderButtonButtonsWrapper>\n <StyledMotionSliderButtonThumb\n $isRounded={isRounded}\n ref={scope}\n drag={isDisabled ? false : 'x'}\n dragElastic={0}\n dragConstraints={\n isSliderBigger\n ? { ...dragRange, right: dragRange.right - itemWidth }\n : { ...dragRange }\n }\n $width={itemWidth}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onClick={() => handleClick(currentId, currentIndex)}\n style={{ backgroundColor: thumbBackgroundColor }}\n data-slider-button-thumb=\"true\"\n tabIndex={\n shouldEnableKeyboardHighlightingEffective && !isDisabled ? 0 : undefined\n }\n role={\n shouldEnableKeyboardHighlightingEffective && !isDisabled\n ? 'button'\n : undefined\n }\n onKeyDown={\n shouldEnableKeyboardHighlightingEffective && !isDisabled\n ? handleThumbKeyDown\n : undefined\n }\n $shouldShowKeyboardHighlighting={shouldShowKeyboardHighlighting}\n />\n <StyledSliderButtonWrapper\n $isRounded={isRounded}\n $isDisabled={isDisabled}\n $width={!isSliderBigger ? dragRange.right + itemWidth : dragRange.right}\n ref={sliderButtonWrapperRef}\n style={{ backgroundColor }}\n >\n <AnimatePresence>\n <StyledSliderButtonButtonsWrapper>\n {buttons}\n </StyledSliderButtonButtonsWrapper>\n </AnimatePresence>\n </StyledSliderButtonWrapper>\n </StyledSliderButton>\n ),\n [\n backgroundColor,\n buttons,\n currentId,\n currentIndex,\n dragRange,\n handleClick,\n handleDragEnd,\n handleDragStart,\n handleThumbKeyDown,\n isDisabled,\n isRounded,\n isSliderBigger,\n itemWidth,\n pseudoButtons,\n scope,\n shouldEnableKeyboardHighlightingEffective,\n shouldShowKeyboardHighlighting,\n thumbBackgroundColor,\n ],\n );\n};\n\nSliderButton.displayName = 'SliderButton';\n\nexport default SliderButton;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SliderButton.js","names":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_element","_useKeyboardFocusHighlighting","_ColorSchemeProvider","_calculate","_sliderButton","_Icon","_interopRequireDefault","_Popup","_SliderButton","_styledComponents","_useSliderButtonPopupKeyboard","_useSliderButtonThumbKeyboard","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SliderButton","isDisabled","isSecondary","items","onChange","selectedButtonId","isRounded","shouldEnableKeyboardHighlighting","dragRange","setDragRange","useState","left","right","shownItemsCount","setShownItemsCount","length","sliderSize","setSliderSize","width","currentId","setCurrentId","currentPopupId","setCurrentPopupId","currentIndex","setCurrentIndex","isPopupOpen","setIsPopupOpen","sliderButtonRef","useRef","sliderButtonWrapperRef","popupRef","popupItemRefs","scope","animate","useAnimate","theme","useTheme","colorScheme","useColorScheme","shouldEnableKeyboardHighlightingEffective","shouldShowKeyboardHighlighting","useKeyboardFocusHighlighting","initialItemWidth","useMemo","calculateBiggestWidth","elementSize","useElementSize","useEffect","setPopupId","useCallback","selectedId","ids","slice","map","id","newId","find","isSliderBigger","Math","floor","maxShownItemsCount","totalWidth","count","visibleItems","currentMaxWidth","itemWidth","sliderWidth","itemCount","animation","x","current","type","duration","setItemPosition","index","findIndex","handleClick","otherItem","_","indexOf","show","hide","backgroundColor","color","buttonBackgroundColor","buttonDesign","thumbBackgroundColor","popupItems","focusThumb","_sliderButtonRef$curr","thumb","querySelector","focus","handlePopupKeyDown","useSliderButtonPopupKeyboard","onSelectPopupItem","handleThumbKeyDown","useSliderButtonThumbKeyboard","onSelectThumbItem","buttons","newItems","otherItems","elements","text","createElement","StyledSliderButtonItem","$isSecondary","$width","key","onClick","popupContent","popupIndex","StyledSliderButtonPopupContentItem","onKeyDown","ref","element","tabIndex","role","$isSelected","push","onShow","onHide","content","StyledSliderButtonPopupContent","icons","pseudoButtons","snapPoints","points","handleDragStart","setRefreshScrollEnabled","handleDragEnd","position","getThumbPosition","middle","scrollLeft","getNearestPoint","nearestPoint","nearestIndex","hasMoreItems","_items$nearestIndex","StyledSliderButton","$isDisabled","StyledSliderButtonButtonsWrapper","$isInvisible","StyledMotionSliderButtonThumb","$isRounded","drag","dragElastic","dragConstraints","onDragEnd","onDragStart","style","undefined","$shouldShowKeyboardHighlighting","StyledSliderButtonWrapper","AnimatePresence","displayName","_default","exports"],"sources":["../../../../src/components/slider-button/SliderButton.tsx"],"sourcesContent":["import { setRefreshScrollEnabled } from 'chayns-api';\nimport { AnimatePresence, useAnimate } from 'motion/react';\nimport React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useElementSize } from '../../hooks/element';\nimport { useKeyboardFocusHighlighting } from '../../hooks/useKeyboardFocusHighlighting';\nimport { useColorScheme } from '../color-scheme-provider/ColorSchemeProvider';\nimport { PopupRef } from '../../types/popup';\nimport { calculateBiggestWidth } from '../../utils/calculate';\nimport { getNearestPoint, getThumbPosition } from '../../utils/sliderButton';\nimport Icon from '../icon/Icon';\nimport Popup from '../popup/Popup';\nimport {\n StyledMotionSliderButtonThumb,\n StyledSliderButton,\n StyledSliderButtonButtonsWrapper,\n StyledSliderButtonItem,\n StyledSliderButtonPopupContent,\n StyledSliderButtonPopupContentItem,\n StyledSliderButtonWrapper,\n} from './SliderButton.styles';\nimport { useTheme } from 'styled-components';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\nimport { SliderButtonProps } from './SliderButton.types';\nimport { useSliderButtonPopupKeyboard } from './useSliderButtonPopupKeyboard';\nimport { useSliderButtonThumbKeyboard } from './useSliderButtonThumbKeyboard';\n\nconst SliderButton: FC<SliderButtonProps> = ({\n isDisabled,\n isSecondary,\n items,\n onChange,\n selectedButtonId,\n isRounded = false,\n shouldEnableKeyboardHighlighting,\n}) => {\n const [dragRange, setDragRange] = useState({ left: 0, right: 0 });\n const [shownItemsCount, setShownItemsCount] = useState(items.length);\n const [sliderSize, setSliderSize] = useState({ width: 0 });\n const [currentId, setCurrentId] = useState('');\n const [currentPopupId, setCurrentPopupId] = useState('');\n const [currentIndex, setCurrentIndex] = useState(0);\n const [isPopupOpen, setIsPopupOpen] = useState(false);\n\n const sliderButtonRef = useRef<HTMLDivElement>(null);\n const sliderButtonWrapperRef = useRef<HTMLDivElement>(null);\n const popupRef = useRef<PopupRef>(null);\n const popupItemRefs = useRef<Array<HTMLDivElement | null>>([]);\n\n const [scope, animate] = useAnimate();\n\n const theme = useTheme() as Theme;\n const colorScheme = useColorScheme();\n const shouldEnableKeyboardHighlightingEffective =\n shouldEnableKeyboardHighlighting ?? colorScheme?.shouldEnableKeyboardHighlighting ?? false;\n\n const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(\n shouldEnableKeyboardHighlightingEffective && !isDisabled,\n );\n\n const initialItemWidth = useMemo(() => calculateBiggestWidth(items), [items]);\n const elementSize = useElementSize(sliderButtonRef);\n\n useEffect(() => {\n if (elementSize) setSliderSize(elementSize);\n }, [elementSize]);\n\n const setPopupId = useCallback(\n (selectedId: string) => {\n const ids = items.slice(shownItemsCount - 1).map(({ id }) => id);\n\n const newId = ids.find((id) => id === selectedId);\n\n if (newId) {\n setCurrentId('more');\n setCurrentPopupId(newId);\n\n return;\n }\n\n setCurrentId(selectedId);\n },\n [items, shownItemsCount],\n );\n\n const isSliderBigger = useMemo(\n () => sliderSize && Math.floor(sliderSize.width / initialItemWidth) < items.length - 1,\n [initialItemWidth, items.length, sliderSize],\n );\n\n const maxShownItemsCount = useMemo(() => {\n let totalWidth = 0;\n let count = 0;\n\n while (count < items.length) {\n const visibleItems = items.slice(0, count + 1);\n const currentMaxWidth = calculateBiggestWidth(visibleItems) + 8;\n\n if (totalWidth + currentMaxWidth > sliderSize.width) break;\n\n totalWidth += currentMaxWidth;\n count++;\n }\n\n return count;\n }, [items, sliderSize.width]);\n\n const itemWidth = useMemo(() => {\n const sliderWidth = sliderSize?.width || 0;\n const itemCount = items.length || 1;\n\n setShownItemsCount(isSliderBigger ? maxShownItemsCount : itemCount);\n\n return sliderWidth / (isSliderBigger ? maxShownItemsCount : itemCount);\n }, [isSliderBigger, items.length, maxShownItemsCount, sliderSize?.width]);\n\n useEffect(() => {\n if (sliderSize) {\n const sliderWidth = itemWidth * (items.length - 1);\n\n const count = Math.floor(sliderSize.width / itemWidth);\n\n setDragRange({ left: 0, right: isSliderBigger ? itemWidth * count : sliderWidth });\n }\n }, [isSliderBigger, itemWidth, items.length, sliderSize]);\n\n const animation = useCallback(\n async (x: number) => {\n await animate(\n scope.current,\n { x },\n {\n type: 'tween',\n duration: 0.2,\n },\n );\n },\n [animate, scope],\n );\n\n const setItemPosition = useCallback(\n (index: number) => {\n setCurrentIndex(index);\n\n void animation(itemWidth * index);\n },\n [animation, itemWidth],\n );\n\n useEffect(() => {\n if (typeof selectedButtonId === 'string') {\n let index = items.findIndex(({ id }) => id === selectedButtonId);\n\n setCurrentId(selectedButtonId);\n\n setPopupId(selectedButtonId);\n\n if (items.length > shownItemsCount && index > shownItemsCount - 1) {\n index = shownItemsCount - 1;\n }\n\n if (index >= 0) {\n setItemPosition(index);\n }\n }\n }, [\n animation,\n dragRange.right,\n isSliderBigger,\n itemWidth,\n items,\n selectedButtonId,\n setItemPosition,\n setPopupId,\n shownItemsCount,\n ]);\n\n const handleClick = useCallback(\n (id: string, index: number) => {\n if (isDisabled) {\n return;\n }\n\n if (currentIndex === index && items.length === 2) {\n const otherItem = items.find((_, findIndex) => index !== findIndex);\n if (!otherItem) return;\n\n setPopupId(otherItem.id);\n setItemPosition(items.indexOf(otherItem));\n onChange?.(otherItem.id);\n return;\n }\n\n setPopupId(id);\n\n if (typeof onChange === 'function' && id !== 'more') {\n onChange(id);\n }\n\n if (popupRef.current) {\n if (id === 'more') {\n popupRef.current.show();\n } else {\n popupRef.current.hide();\n }\n }\n\n setItemPosition(index);\n },\n [currentIndex, isDisabled, items, onChange, setItemPosition, setPopupId],\n );\n\n const backgroundColor = useMemo(() => {\n let color;\n\n if (isSecondary) {\n color = theme['202'];\n } else {\n color = theme.buttonBackgroundColor ?? theme['408'];\n }\n\n if (theme.buttonDesign === '2') {\n color = `rgba(${theme['102-rgb'] ?? ''}, 0)`;\n }\n\n return color;\n }, [isSecondary, theme]);\n\n const thumbBackgroundColor = useMemo(() => {\n let color;\n\n if (isSecondary) {\n color = theme['207'];\n } else {\n color = `rgba(${theme['405-rgb'] ?? ''}, 0.75)`;\n }\n\n if (theme.buttonDesign === '2') {\n color = `rgba(${theme['102-rgb'] ?? ''}, 0)`;\n }\n\n return color;\n }, [isSecondary, theme]);\n\n const popupItems = useMemo(() => items.slice(shownItemsCount - 1), [items, shownItemsCount]);\n\n const focusThumb = useCallback(() => {\n const thumb = sliderButtonRef.current?.querySelector(\n '[data-slider-button-thumb=\"true\"]',\n ) as HTMLDivElement | null;\n\n thumb?.focus();\n }, []);\n\n const { handlePopupKeyDown } = useSliderButtonPopupKeyboard({\n isPopupOpen,\n popupItems,\n currentPopupId,\n shownItemsCount,\n popupItemRefs,\n popupRef,\n focusThumb,\n onSelectPopupItem: handleClick,\n });\n\n const { handleThumbKeyDown } = useSliderButtonThumbKeyboard({\n currentId,\n currentIndex,\n shownItemsCount,\n items,\n onSelectThumbItem: handleClick,\n });\n\n const buttons = useMemo(() => {\n if (items.length > shownItemsCount) {\n const newItems = items.slice(0, shownItemsCount - 1);\n const otherItems = items.slice(shownItemsCount - 1);\n\n const elements = newItems.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n\n const popupContent = otherItems.map(({ id, text }, popupIndex) => (\n <StyledSliderButtonPopupContentItem\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, newItems.length)}\n onKeyDown={handlePopupKeyDown}\n ref={(element: HTMLDivElement | null) => {\n popupItemRefs.current[popupIndex] = element;\n }}\n tabIndex={-1}\n role=\"button\"\n $isSelected={id === currentPopupId}\n >\n {text}\n </StyledSliderButtonPopupContentItem>\n ));\n\n const id = 'more';\n\n elements.push(\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n >\n <Popup\n ref={popupRef}\n onShow={() => {\n setIsPopupOpen(true);\n }}\n onHide={() => {\n setIsPopupOpen(false);\n popupItemRefs.current = [];\n }}\n content={\n <StyledSliderButtonPopupContent onKeyDown={handlePopupKeyDown}>\n {popupContent}\n </StyledSliderButtonPopupContent>\n }\n >\n <Icon icons={['fa fa-ellipsis']} color=\"white\" />\n </Popup>\n </StyledSliderButtonItem>,\n );\n\n return elements;\n }\n return items.map(({ id, text }) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [\n currentPopupId,\n handleClick,\n handlePopupKeyDown,\n isSecondary,\n itemWidth,\n items,\n shownItemsCount,\n ]);\n\n const pseudoButtons = useMemo(() => {\n if (items.length > shownItemsCount) {\n const newItems = items.slice(0, shownItemsCount - 1);\n\n const elements = newItems.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n\n const id = 'more';\n\n elements.push(\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, newItems.length)}\n >\n <Icon icons={['fa fa-ellipsis']} />\n </StyledSliderButtonItem>,\n );\n\n return elements;\n }\n return items.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [handleClick, isSecondary, itemWidth, items, shownItemsCount]);\n\n /**\n * Creates an array with the snap points relative to the width of the items\n */\n const snapPoints = useMemo(() => {\n const points = [0];\n\n for (let i = 1; i < items.length; i++) {\n points.push(itemWidth * i);\n }\n\n return points;\n }, [itemWidth, items.length]);\n\n const handleDragStart = useCallback(() => {\n void setRefreshScrollEnabled(false);\n }, []);\n\n const handleDragEnd = useCallback(() => {\n void setRefreshScrollEnabled(true);\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle, left } = position;\n\n let scrollLeft = 0;\n\n if (sliderButtonWrapperRef.current) {\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n\n sliderButtonWrapperRef.current.scrollLeft = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: scrollLeft - left,\n }).nearestPoint;\n }\n\n const { nearestIndex } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft,\n });\n\n const { nearestPoint } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: 0,\n });\n const hasMoreItems = items.length > shownItemsCount;\n\n if (nearestPoint >= 0 && nearestIndex >= 0) {\n void animation(nearestPoint);\n\n let id;\n\n if (hasMoreItems && nearestIndex === shownItemsCount - 1) {\n id = 'more';\n } else {\n id = items[nearestIndex]?.id;\n }\n\n if (popupRef.current) {\n if (id === 'more') {\n popupRef.current.show();\n } else {\n popupRef.current.hide();\n }\n }\n\n if (typeof onChange === 'function' && id) {\n setPopupId(id);\n setCurrentIndex(nearestIndex);\n if (id !== 'more') onChange(id);\n }\n }\n }, [animation, itemWidth, items, onChange, scope, setPopupId, shownItemsCount, snapPoints]);\n\n return useMemo(\n () => (\n <StyledSliderButton $isDisabled={isDisabled} ref={sliderButtonRef}>\n <StyledSliderButtonButtonsWrapper $isInvisible>\n {pseudoButtons}\n </StyledSliderButtonButtonsWrapper>\n <StyledMotionSliderButtonThumb\n $isRounded={isRounded}\n ref={scope}\n drag={isDisabled ? false : 'x'}\n dragElastic={0}\n dragConstraints={\n isSliderBigger\n ? { ...dragRange, right: dragRange.right - itemWidth }\n : { ...dragRange }\n }\n $width={itemWidth}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onClick={() => handleClick(currentId, currentIndex)}\n style={{ backgroundColor: thumbBackgroundColor }}\n data-slider-button-thumb=\"true\"\n tabIndex={\n shouldEnableKeyboardHighlightingEffective && !isDisabled ? 0 : undefined\n }\n role={\n shouldEnableKeyboardHighlightingEffective && !isDisabled\n ? 'button'\n : undefined\n }\n onKeyDown={\n shouldEnableKeyboardHighlightingEffective && !isDisabled\n ? handleThumbKeyDown\n : undefined\n }\n $shouldShowKeyboardHighlighting={shouldShowKeyboardHighlighting}\n />\n <StyledSliderButtonWrapper\n $isRounded={isRounded}\n $isDisabled={isDisabled}\n $width={!isSliderBigger ? dragRange.right + itemWidth : dragRange.right}\n ref={sliderButtonWrapperRef}\n style={{ backgroundColor }}\n >\n <AnimatePresence>\n <StyledSliderButtonButtonsWrapper>\n {buttons}\n </StyledSliderButtonButtonsWrapper>\n </AnimatePresence>\n </StyledSliderButtonWrapper>\n </StyledSliderButton>\n ),\n [\n backgroundColor,\n buttons,\n currentId,\n currentIndex,\n dragRange,\n handleClick,\n handleDragEnd,\n handleDragStart,\n handleThumbKeyDown,\n isDisabled,\n isRounded,\n isSliderBigger,\n itemWidth,\n pseudoButtons,\n scope,\n shouldEnableKeyboardHighlightingEffective,\n shouldShowKeyboardHighlighting,\n thumbBackgroundColor,\n ],\n );\n};\n\nSliderButton.displayName = 'SliderButton';\n\nexport default SliderButton;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -51,7 +51,7 @@ const useSliderButtonPopupKeyboard = ({
|
|
|
51
51
|
}
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
54
|
-
if (event.key === 'Escape') {
|
|
54
|
+
if (event.key === 'Escape' || event.key === 'ArrowLeft' || event.key === 'Tab') {
|
|
55
55
|
var _popupRef$current;
|
|
56
56
|
event.preventDefault();
|
|
57
57
|
(_popupRef$current = popupRef.current) === null || _popupRef$current === void 0 || _popupRef$current.hide();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSliderButtonPopupKeyboard.js","names":["_react","require","useSliderButtonPopupKeyboard","isPopupOpen","popupItems","currentPopupId","shownItemsCount","popupItemRefs","popupRef","focusThumb","onSelectPopupItem","focusedPopupIndex","setFocusedPopupIndex","useState","useEffect","selectedIndex","findIndex","id","initialIndex","window","requestAnimationFrame","_popupItemRefs$curren","current","focus","handlePopupKeyDown","useCallback","event","length","key","_popupItemRefs$curren2","preventDefault","direction","nextIndex","nextItem","Math","max","_popupRef$current","hide","exports"],"sources":["../../../../src/components/slider-button/useSliderButtonPopupKeyboard.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport type { KeyboardEventHandler, MutableRefObject } from 'react';\nimport type { PopupRef } from '../../types/popup';\nimport type { SliderButtonItem } from '../../types/slider-button';\n\ntype UseSliderButtonPopupKeyboardProps = {\n isPopupOpen: boolean;\n popupItems: SliderButtonItem[];\n currentPopupId: string;\n shownItemsCount: number;\n popupItemRefs: MutableRefObject<Array<HTMLDivElement | null>>;\n popupRef: MutableRefObject<PopupRef | null>;\n focusThumb: VoidFunction;\n onSelectPopupItem: (id: string, index: number) => void;\n};\n\nexport const useSliderButtonPopupKeyboard = ({\n isPopupOpen,\n popupItems,\n currentPopupId,\n shownItemsCount,\n popupItemRefs,\n popupRef,\n focusThumb,\n onSelectPopupItem,\n}: UseSliderButtonPopupKeyboardProps) => {\n const [focusedPopupIndex, setFocusedPopupIndex] = useState(0);\n\n useEffect(() => {\n if (!isPopupOpen) {\n return;\n }\n\n const selectedIndex = popupItems.findIndex(({ id }) => id === currentPopupId);\n const initialIndex = selectedIndex >= 0 ? selectedIndex : 0;\n\n setFocusedPopupIndex(initialIndex);\n\n window.requestAnimationFrame(() => {\n popupItemRefs.current[initialIndex]?.focus();\n });\n }, [currentPopupId, isPopupOpen, popupItems, popupItemRefs]);\n\n const handlePopupKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n (event) => {\n if (!isPopupOpen || popupItems.length === 0) {\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n\n const direction = event.key === 'ArrowDown' ? 1 : -1;\n const nextIndex =\n (focusedPopupIndex + direction + popupItems.length) % popupItems.length;\n\n setFocusedPopupIndex(nextIndex);\n popupItemRefs.current[nextIndex]?.focus();\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n\n const nextItem = popupItems[focusedPopupIndex];\n\n if (nextItem) {\n onSelectPopupItem(nextItem.id, Math.max(0, shownItemsCount - 1));\n }\n\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n popupRef.current?.hide();\n focusThumb();\n }\n },\n [\n focusThumb,\n focusedPopupIndex,\n isPopupOpen,\n onSelectPopupItem,\n popupItemRefs,\n popupItems,\n popupRef,\n shownItemsCount,\n ],\n );\n\n return { handlePopupKeyDown };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAgBO,MAAMC,4BAA4B,GAAGA,CAAC;EACzCC,WAAW;EACXC,UAAU;EACVC,cAAc;EACdC,eAAe;EACfC,aAAa;EACbC,QAAQ;EACRC,UAAU;EACVC;AAC+B,CAAC,KAAK;EACrC,MAAM,CAACC,iBAAiB,EAAEC,oBAAoB,CAAC,GAAG,IAAAC,eAAQ,EAAC,CAAC,CAAC;EAE7D,IAAAC,gBAAS,EAAC,MAAM;IACZ,IAAI,CAACX,WAAW,EAAE;MACd;IACJ;IAEA,MAAMY,aAAa,GAAGX,UAAU,CAACY,SAAS,CAAC,CAAC;MAAEC;IAAG,CAAC,KAAKA,EAAE,KAAKZ,cAAc,CAAC;IAC7E,MAAMa,YAAY,GAAGH,aAAa,IAAI,CAAC,GAAGA,aAAa,GAAG,CAAC;IAE3DH,oBAAoB,CAACM,YAAY,CAAC;IAElCC,MAAM,CAACC,qBAAqB,CAAC,MAAM;MAAA,IAAAC,qBAAA;MAC/B,CAAAA,qBAAA,GAAAd,aAAa,CAACe,OAAO,CAACJ,YAAY,CAAC,cAAAG,qBAAA,eAAnCA,qBAAA,CAAqCE,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC;EACN,CAAC,EAAE,CAAClB,cAAc,EAAEF,WAAW,EAAEC,UAAU,EAAEG,aAAa,CAAC,CAAC;EAE5D,MAAMiB,kBAAkB,GAAG,IAAAC,kBAAW,EACjCC,KAAK,IAAK;IACP,IAAI,CAACvB,WAAW,IAAIC,UAAU,CAACuB,MAAM,KAAK,CAAC,EAAE;MACzC;IACJ;IAEA,IAAID,KAAK,CAACE,GAAG,KAAK,WAAW,IAAIF,KAAK,CAACE,GAAG,KAAK,SAAS,EAAE;MAAA,IAAAC,sBAAA;MACtDH,KAAK,CAACI,cAAc,CAAC,CAAC;MAEtB,MAAMC,SAAS,GAAGL,KAAK,CAACE,GAAG,KAAK,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;MACpD,MAAMI,SAAS,GACX,CAACrB,iBAAiB,GAAGoB,SAAS,GAAG3B,UAAU,CAACuB,MAAM,IAAIvB,UAAU,CAACuB,MAAM;MAE3Ef,oBAAoB,CAACoB,SAAS,CAAC;MAC/B,CAAAH,sBAAA,GAAAtB,aAAa,CAACe,OAAO,CAACU,SAAS,CAAC,cAAAH,sBAAA,eAAhCA,sBAAA,CAAkCN,KAAK,CAAC,CAAC;MACzC;IACJ;IAEA,IAAIG,KAAK,CAACE,GAAG,KAAK,OAAO,IAAIF,KAAK,CAACE,GAAG,KAAK,GAAG,EAAE;MAC5CF,KAAK,CAACI,cAAc,CAAC,CAAC;MAEtB,MAAMG,QAAQ,GAAG7B,UAAU,CAACO,iBAAiB,CAAC;MAE9C,IAAIsB,QAAQ,EAAE;QACVvB,iBAAiB,CAACuB,QAAQ,CAAChB,EAAE,EAAEiB,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE7B,eAAe,GAAG,CAAC,CAAC,CAAC;MACpE;MAEA;IACJ;IAEA,IAAIoB,KAAK,CAACE,GAAG,KAAK,QAAQ,EAAE;MAAA,IAAAQ,iBAAA;
|
|
1
|
+
{"version":3,"file":"useSliderButtonPopupKeyboard.js","names":["_react","require","useSliderButtonPopupKeyboard","isPopupOpen","popupItems","currentPopupId","shownItemsCount","popupItemRefs","popupRef","focusThumb","onSelectPopupItem","focusedPopupIndex","setFocusedPopupIndex","useState","useEffect","selectedIndex","findIndex","id","initialIndex","window","requestAnimationFrame","_popupItemRefs$curren","current","focus","handlePopupKeyDown","useCallback","event","length","key","_popupItemRefs$curren2","preventDefault","direction","nextIndex","nextItem","Math","max","_popupRef$current","hide","exports"],"sources":["../../../../src/components/slider-button/useSliderButtonPopupKeyboard.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport type { KeyboardEventHandler, MutableRefObject } from 'react';\nimport type { PopupRef } from '../../types/popup';\nimport type { SliderButtonItem } from '../../types/slider-button';\n\ntype UseSliderButtonPopupKeyboardProps = {\n isPopupOpen: boolean;\n popupItems: SliderButtonItem[];\n currentPopupId: string;\n shownItemsCount: number;\n popupItemRefs: MutableRefObject<Array<HTMLDivElement | null>>;\n popupRef: MutableRefObject<PopupRef | null>;\n focusThumb: VoidFunction;\n onSelectPopupItem: (id: string, index: number) => void;\n};\n\nexport const useSliderButtonPopupKeyboard = ({\n isPopupOpen,\n popupItems,\n currentPopupId,\n shownItemsCount,\n popupItemRefs,\n popupRef,\n focusThumb,\n onSelectPopupItem,\n}: UseSliderButtonPopupKeyboardProps) => {\n const [focusedPopupIndex, setFocusedPopupIndex] = useState(0);\n\n useEffect(() => {\n if (!isPopupOpen) {\n return;\n }\n\n const selectedIndex = popupItems.findIndex(({ id }) => id === currentPopupId);\n const initialIndex = selectedIndex >= 0 ? selectedIndex : 0;\n\n setFocusedPopupIndex(initialIndex);\n\n window.requestAnimationFrame(() => {\n popupItemRefs.current[initialIndex]?.focus();\n });\n }, [currentPopupId, isPopupOpen, popupItems, popupItemRefs]);\n\n const handlePopupKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n (event) => {\n if (!isPopupOpen || popupItems.length === 0) {\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n\n const direction = event.key === 'ArrowDown' ? 1 : -1;\n const nextIndex =\n (focusedPopupIndex + direction + popupItems.length) % popupItems.length;\n\n setFocusedPopupIndex(nextIndex);\n popupItemRefs.current[nextIndex]?.focus();\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n\n const nextItem = popupItems[focusedPopupIndex];\n\n if (nextItem) {\n onSelectPopupItem(nextItem.id, Math.max(0, shownItemsCount - 1));\n }\n\n return;\n }\n\n if (event.key === 'Escape' || event.key === 'ArrowLeft' || event.key === 'Tab') {\n event.preventDefault();\n popupRef.current?.hide();\n focusThumb();\n }\n },\n [\n focusThumb,\n focusedPopupIndex,\n isPopupOpen,\n onSelectPopupItem,\n popupItemRefs,\n popupItems,\n popupRef,\n shownItemsCount,\n ],\n );\n\n return { handlePopupKeyDown };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderButton.js","names":["setRefreshScrollEnabled","AnimatePresence","useAnimate","React","useCallback","useEffect","useMemo","useRef","useState","useElementSize","useKeyboardFocusHighlighting","useColorScheme","calculateBiggestWidth","getNearestPoint","getThumbPosition","Icon","Popup","StyledMotionSliderButtonThumb","StyledSliderButton","StyledSliderButtonButtonsWrapper","StyledSliderButtonItem","StyledSliderButtonPopupContent","StyledSliderButtonPopupContentItem","StyledSliderButtonWrapper","useTheme","useSliderButtonPopupKeyboard","useSliderButtonThumbKeyboard","SliderButton","isDisabled","isSecondary","items","onChange","selectedButtonId","isRounded","shouldEnableKeyboardHighlighting","dragRange","setDragRange","left","right","shownItemsCount","setShownItemsCount","length","sliderSize","setSliderSize","width","currentId","setCurrentId","currentPopupId","setCurrentPopupId","currentIndex","setCurrentIndex","isPopupOpen","setIsPopupOpen","sliderButtonRef","sliderButtonWrapperRef","popupRef","popupItemRefs","scope","animate","theme","colorScheme","shouldEnableKeyboardHighlightingEffective","shouldShowKeyboardHighlighting","initialItemWidth","elementSize","setPopupId","selectedId","ids","slice","map","id","newId","find","isSliderBigger","Math","floor","maxShownItemsCount","totalWidth","count","visibleItems","currentMaxWidth","itemWidth","sliderWidth","itemCount","animation","x","current","type","duration","setItemPosition","index","findIndex","handleClick","otherItem","_","indexOf","show","hide","backgroundColor","color","buttonBackgroundColor","buttonDesign","thumbBackgroundColor","popupItems","focusThumb","thumb","querySelector","focus","handlePopupKeyDown","onSelectPopupItem","handleThumbKeyDown","onSelectThumbItem","buttons","newItems","otherItems","elements","text","createElement","$isSecondary","$width","key","onClick","popupContent","popupIndex","onKeyDown","ref","element","tabIndex","role","$isSelected","push","onShow","onHide","content","icons","pseudoButtons","snapPoints","points","i","handleDragStart","handleDragEnd","position","middle","scrollLeft","nearestPoint","nearestIndex","hasMoreItems","$isDisabled","$isInvisible","$isRounded","drag","dragElastic","dragConstraints","onDragEnd","onDragStart","style","undefined","$shouldShowKeyboardHighlighting","displayName"],"sources":["../../../../src/components/slider-button/SliderButton.tsx"],"sourcesContent":["import { setRefreshScrollEnabled } from 'chayns-api';\nimport { AnimatePresence, useAnimate } from 'motion/react';\nimport React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useElementSize } from '../../hooks/element';\nimport { useKeyboardFocusHighlighting } from '../../hooks/useKeyboardFocusHighlighting';\nimport { useColorScheme } from '../color-scheme-provider/ColorSchemeProvider';\nimport { PopupRef } from '../../types/popup';\nimport { calculateBiggestWidth } from '../../utils/calculate';\nimport { getNearestPoint, getThumbPosition } from '../../utils/sliderButton';\nimport Icon from '../icon/Icon';\nimport Popup from '../popup/Popup';\nimport {\n StyledMotionSliderButtonThumb,\n StyledSliderButton,\n StyledSliderButtonButtonsWrapper,\n StyledSliderButtonItem,\n StyledSliderButtonPopupContent,\n StyledSliderButtonPopupContentItem,\n StyledSliderButtonWrapper,\n} from './SliderButton.styles';\nimport { useTheme } from 'styled-components';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\nimport { SliderButtonProps } from './SliderButton.types';\nimport { useSliderButtonPopupKeyboard } from './useSliderButtonPopupKeyboard';\nimport { useSliderButtonThumbKeyboard } from './useSliderButtonThumbKeyboard';\n\nconst SliderButton: FC<SliderButtonProps> = ({\n isDisabled,\n isSecondary,\n items,\n onChange,\n selectedButtonId,\n isRounded = false,\n shouldEnableKeyboardHighlighting,\n}) => {\n const [dragRange, setDragRange] = useState({ left: 0, right: 0 });\n const [shownItemsCount, setShownItemsCount] = useState(items.length);\n const [sliderSize, setSliderSize] = useState({ width: 0 });\n const [currentId, setCurrentId] = useState('');\n const [currentPopupId, setCurrentPopupId] = useState('');\n const [currentIndex, setCurrentIndex] = useState(0);\n const [isPopupOpen, setIsPopupOpen] = useState(false);\n\n const sliderButtonRef = useRef<HTMLDivElement>(null);\n const sliderButtonWrapperRef = useRef<HTMLDivElement>(null);\n const popupRef = useRef<PopupRef>(null);\n const popupItemRefs = useRef<Array<HTMLDivElement | null>>([]);\n\n const [scope, animate] = useAnimate();\n\n const theme = useTheme() as Theme;\n const colorScheme = useColorScheme();\n const shouldEnableKeyboardHighlightingEffective =\n shouldEnableKeyboardHighlighting ?? colorScheme?.shouldEnableKeyboardHighlighting ?? false;\n\n const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(\n shouldEnableKeyboardHighlightingEffective && !isDisabled,\n );\n\n const initialItemWidth = useMemo(() => calculateBiggestWidth(items), [items]);\n const elementSize = useElementSize(sliderButtonRef);\n\n useEffect(() => {\n if (elementSize) setSliderSize(elementSize);\n }, [elementSize]);\n\n const setPopupId = useCallback(\n (selectedId: string) => {\n const ids = items.slice(shownItemsCount - 1).map(({ id }) => id);\n\n const newId = ids.find((id) => id === selectedId);\n\n if (newId) {\n setCurrentId('more');\n setCurrentPopupId(newId);\n\n return;\n }\n\n setCurrentId(selectedId);\n },\n [items, shownItemsCount],\n );\n\n const isSliderBigger = useMemo(\n () => sliderSize && Math.floor(sliderSize.width / initialItemWidth) < items.length - 1,\n [initialItemWidth, items.length, sliderSize],\n );\n\n const maxShownItemsCount = useMemo(() => {\n let totalWidth = 0;\n let count = 0;\n\n while (count < items.length) {\n const visibleItems = items.slice(0, count + 1);\n const currentMaxWidth = calculateBiggestWidth(visibleItems) + 8;\n\n if (totalWidth + currentMaxWidth > sliderSize.width) break;\n\n totalWidth += currentMaxWidth;\n count++;\n }\n\n return count;\n }, [items, sliderSize.width]);\n\n const itemWidth = useMemo(() => {\n const sliderWidth = sliderSize?.width || 0;\n const itemCount = items.length || 1;\n\n setShownItemsCount(isSliderBigger ? maxShownItemsCount : itemCount);\n\n return sliderWidth / (isSliderBigger ? maxShownItemsCount : itemCount);\n }, [isSliderBigger, items.length, maxShownItemsCount, sliderSize?.width]);\n\n useEffect(() => {\n if (sliderSize) {\n const sliderWidth = itemWidth * (items.length - 1);\n\n const count = Math.floor(sliderSize.width / itemWidth);\n\n setDragRange({ left: 0, right: isSliderBigger ? itemWidth * count : sliderWidth });\n }\n }, [isSliderBigger, itemWidth, items.length, sliderSize]);\n\n const animation = useCallback(\n async (x: number) => {\n await animate(\n scope.current,\n { x },\n {\n type: 'tween',\n duration: 0.2,\n },\n );\n },\n [animate, scope],\n );\n\n const setItemPosition = useCallback(\n (index: number) => {\n setCurrentIndex(index);\n\n void animation(itemWidth * index);\n },\n [animation, itemWidth],\n );\n\n useEffect(() => {\n if (typeof selectedButtonId === 'string') {\n let index = items.findIndex(({ id }) => id === selectedButtonId);\n\n setCurrentId(selectedButtonId);\n\n setPopupId(selectedButtonId);\n\n if (items.length > shownItemsCount && index > shownItemsCount - 1) {\n index = shownItemsCount - 1;\n }\n\n if (index >= 0) {\n setItemPosition(index);\n }\n }\n }, [\n animation,\n dragRange.right,\n isSliderBigger,\n itemWidth,\n items,\n selectedButtonId,\n setItemPosition,\n setPopupId,\n shownItemsCount,\n ]);\n\n const handleClick = useCallback(\n (id: string, index: number) => {\n if (isDisabled) {\n return;\n }\n\n if (currentIndex === index && items.length === 2) {\n const otherItem = items.find((_, findIndex) => index !== findIndex);\n if (!otherItem) return;\n\n setPopupId(otherItem.id);\n setItemPosition(items.indexOf(otherItem));\n onChange?.(otherItem.id);\n return;\n }\n\n setPopupId(id);\n\n if (typeof onChange === 'function' && id !== 'more') {\n onChange(id);\n }\n\n if (popupRef.current) {\n if (id === 'more') {\n popupRef.current.show();\n } else {\n popupRef.current.hide();\n }\n }\n\n setItemPosition(index);\n },\n [currentIndex, isDisabled, items, onChange, setItemPosition, setPopupId],\n );\n\n const backgroundColor = useMemo(() => {\n let color;\n\n if (isSecondary) {\n color = theme['202'];\n } else {\n color = theme.buttonBackgroundColor ?? theme['408'];\n }\n\n if (theme.buttonDesign === '2') {\n color = `rgba(${theme['102-rgb'] ?? ''}, 0)`;\n }\n\n return color;\n }, [isSecondary, theme]);\n\n const thumbBackgroundColor = useMemo(() => {\n let color;\n\n if (isSecondary) {\n color = theme['207'];\n } else {\n color = `rgba(${theme['405-rgb'] ?? ''}, 0.75)`;\n }\n\n if (theme.buttonDesign === '2') {\n color = `rgba(${theme['102-rgb'] ?? ''}, 0)`;\n }\n\n return color;\n }, [isSecondary, theme]);\n\n const popupItems = useMemo(() => items.slice(shownItemsCount - 1), [items, shownItemsCount]);\n\n const focusThumb = useCallback(() => {\n const thumb = sliderButtonRef.current?.querySelector(\n '[data-slider-button-thumb=\"true\"]',\n ) as HTMLDivElement | null;\n\n thumb?.focus();\n }, []);\n\n const { handlePopupKeyDown } = useSliderButtonPopupKeyboard({\n isPopupOpen,\n popupItems,\n currentPopupId,\n shownItemsCount,\n popupItemRefs,\n popupRef,\n focusThumb,\n onSelectPopupItem: handleClick,\n });\n\n const { handleThumbKeyDown } = useSliderButtonThumbKeyboard({\n currentId,\n currentIndex,\n shownItemsCount,\n items,\n onSelectThumbItem: handleClick,\n });\n\n const buttons = useMemo(() => {\n if (items.length > shownItemsCount) {\n const newItems = items.slice(0, shownItemsCount - 1);\n const otherItems = items.slice(shownItemsCount - 1);\n\n const elements = newItems.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n\n const popupContent = otherItems.map(({ id, text }, popupIndex) => (\n <StyledSliderButtonPopupContentItem\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, newItems.length)}\n onKeyDown={handlePopupKeyDown}\n ref={(element: HTMLDivElement | null) => {\n popupItemRefs.current[popupIndex] = element;\n }}\n tabIndex={0}\n role=\"button\"\n $isSelected={id === currentPopupId}\n >\n {text}\n </StyledSliderButtonPopupContentItem>\n ));\n\n const id = 'more';\n\n elements.push(\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n >\n <Popup\n ref={popupRef}\n onShow={() => {\n setIsPopupOpen(true);\n }}\n onHide={() => {\n setIsPopupOpen(false);\n popupItemRefs.current = [];\n }}\n content={\n <StyledSliderButtonPopupContent onKeyDown={handlePopupKeyDown}>\n {popupContent}\n </StyledSliderButtonPopupContent>\n }\n >\n <Icon icons={['fa fa-ellipsis']} color=\"white\" />\n </Popup>\n </StyledSliderButtonItem>,\n );\n\n return elements;\n }\n return items.map(({ id, text }) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [\n currentPopupId,\n handleClick,\n handlePopupKeyDown,\n isSecondary,\n itemWidth,\n items,\n shownItemsCount,\n ]);\n\n const pseudoButtons = useMemo(() => {\n if (items.length > shownItemsCount) {\n const newItems = items.slice(0, shownItemsCount - 1);\n\n const elements = newItems.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n\n const id = 'more';\n\n elements.push(\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, newItems.length)}\n >\n <Icon icons={['fa fa-ellipsis']} />\n </StyledSliderButtonItem>,\n );\n\n return elements;\n }\n return items.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [handleClick, isSecondary, itemWidth, items, shownItemsCount]);\n\n /**\n * Creates an array with the snap points relative to the width of the items\n */\n const snapPoints = useMemo(() => {\n const points = [0];\n\n for (let i = 1; i < items.length; i++) {\n points.push(itemWidth * i);\n }\n\n return points;\n }, [itemWidth, items.length]);\n\n const handleDragStart = useCallback(() => {\n void setRefreshScrollEnabled(false);\n }, []);\n\n const handleDragEnd = useCallback(() => {\n void setRefreshScrollEnabled(true);\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle, left } = position;\n\n let scrollLeft = 0;\n\n if (sliderButtonWrapperRef.current) {\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n\n sliderButtonWrapperRef.current.scrollLeft = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: scrollLeft - left,\n }).nearestPoint;\n }\n\n const { nearestIndex } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft,\n });\n\n const { nearestPoint } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: 0,\n });\n const hasMoreItems = items.length > shownItemsCount;\n\n if (nearestPoint >= 0 && nearestIndex >= 0) {\n void animation(nearestPoint);\n\n let id;\n\n if (hasMoreItems && nearestIndex === shownItemsCount - 1) {\n id = 'more';\n } else {\n id = items[nearestIndex]?.id;\n }\n\n if (popupRef.current) {\n if (id === 'more') {\n popupRef.current.show();\n } else {\n popupRef.current.hide();\n }\n }\n\n if (typeof onChange === 'function' && id) {\n setPopupId(id);\n setCurrentIndex(nearestIndex);\n if (id !== 'more') onChange(id);\n }\n }\n }, [animation, itemWidth, items, onChange, scope, setPopupId, shownItemsCount, snapPoints]);\n\n return useMemo(\n () => (\n <StyledSliderButton $isDisabled={isDisabled} ref={sliderButtonRef}>\n <StyledSliderButtonButtonsWrapper $isInvisible>\n {pseudoButtons}\n </StyledSliderButtonButtonsWrapper>\n <StyledMotionSliderButtonThumb\n $isRounded={isRounded}\n ref={scope}\n drag={isDisabled ? false : 'x'}\n dragElastic={0}\n dragConstraints={\n isSliderBigger\n ? { ...dragRange, right: dragRange.right - itemWidth }\n : { ...dragRange }\n }\n $width={itemWidth}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onClick={() => handleClick(currentId, currentIndex)}\n style={{ backgroundColor: thumbBackgroundColor }}\n data-slider-button-thumb=\"true\"\n tabIndex={\n shouldEnableKeyboardHighlightingEffective && !isDisabled ? 0 : undefined\n }\n role={\n shouldEnableKeyboardHighlightingEffective && !isDisabled\n ? 'button'\n : undefined\n }\n onKeyDown={\n shouldEnableKeyboardHighlightingEffective && !isDisabled\n ? handleThumbKeyDown\n : undefined\n }\n $shouldShowKeyboardHighlighting={shouldShowKeyboardHighlighting}\n />\n <StyledSliderButtonWrapper\n $isRounded={isRounded}\n $isDisabled={isDisabled}\n $width={!isSliderBigger ? dragRange.right + itemWidth : dragRange.right}\n ref={sliderButtonWrapperRef}\n style={{ backgroundColor }}\n >\n <AnimatePresence>\n <StyledSliderButtonButtonsWrapper>\n {buttons}\n </StyledSliderButtonButtonsWrapper>\n </AnimatePresence>\n </StyledSliderButtonWrapper>\n </StyledSliderButton>\n ),\n [\n backgroundColor,\n buttons,\n currentId,\n currentIndex,\n dragRange,\n handleClick,\n handleDragEnd,\n handleDragStart,\n handleThumbKeyDown,\n isDisabled,\n isRounded,\n isSliderBigger,\n itemWidth,\n pseudoButtons,\n scope,\n shouldEnableKeyboardHighlightingEffective,\n shouldShowKeyboardHighlighting,\n thumbBackgroundColor,\n ],\n );\n};\n\nSliderButton.displayName = 'SliderButton';\n\nexport default SliderButton;\n"],"mappings":"AAAA,SAASA,uBAAuB,QAAQ,YAAY;AACpD,SAASC,eAAe,EAAEC,UAAU,QAAQ,cAAc;AAC1D,OAAOC,KAAK,IAAQC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACpF,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,4BAA4B,QAAQ,0CAA0C;AACvF,SAASC,cAAc,QAAQ,8CAA8C;AAE7E,SAASC,qBAAqB,QAAQ,uBAAuB;AAC7D,SAASC,eAAe,EAAEC,gBAAgB,QAAQ,0BAA0B;AAC5E,OAAOC,IAAI,MAAM,cAAc;AAC/B,OAAOC,KAAK,MAAM,gBAAgB;AAClC,SACIC,6BAA6B,EAC7BC,kBAAkB,EAClBC,gCAAgC,EAChCC,sBAAsB,EACtBC,8BAA8B,EAC9BC,kCAAkC,EAClCC,yBAAyB,QACtB,uBAAuB;AAC9B,SAASC,QAAQ,QAAQ,mBAAmB;AAG5C,SAASC,4BAA4B,QAAQ,gCAAgC;AAC7E,SAASC,4BAA4B,QAAQ,gCAAgC;AAE7E,MAAMC,YAAmC,GAAGA,CAAC;EACzCC,UAAU;EACVC,WAAW;EACXC,KAAK;EACLC,QAAQ;EACRC,gBAAgB;EAChBC,SAAS,GAAG,KAAK;EACjBC;AACJ,CAAC,KAAK;EACF,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAG5B,QAAQ,CAAC;IAAE6B,IAAI,EAAE,CAAC;IAAEC,KAAK,EAAE;EAAE,CAAC,CAAC;EACjE,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAGhC,QAAQ,CAACsB,KAAK,CAACW,MAAM,CAAC;EACpE,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGnC,QAAQ,CAAC;IAAEoC,KAAK,EAAE;EAAE,CAAC,CAAC;EAC1D,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGtC,QAAQ,CAAC,EAAE,CAAC;EAC9C,MAAM,CAACuC,cAAc,EAAEC,iBAAiB,CAAC,GAAGxC,QAAQ,CAAC,EAAE,CAAC;EACxD,MAAM,CAACyC,YAAY,EAAEC,eAAe,CAAC,GAAG1C,QAAQ,CAAC,CAAC,CAAC;EACnD,MAAM,CAAC2C,WAAW,EAAEC,cAAc,CAAC,GAAG5C,QAAQ,CAAC,KAAK,CAAC;EAErD,MAAM6C,eAAe,GAAG9C,MAAM,CAAiB,IAAI,CAAC;EACpD,MAAM+C,sBAAsB,GAAG/C,MAAM,CAAiB,IAAI,CAAC;EAC3D,MAAMgD,QAAQ,GAAGhD,MAAM,CAAW,IAAI,CAAC;EACvC,MAAMiD,aAAa,GAAGjD,MAAM,CAA+B,EAAE,CAAC;EAE9D,MAAM,CAACkD,KAAK,EAAEC,OAAO,CAAC,GAAGxD,UAAU,CAAC,CAAC;EAErC,MAAMyD,KAAK,GAAGnC,QAAQ,CAAC,CAAU;EACjC,MAAMoC,WAAW,GAAGjD,cAAc,CAAC,CAAC;EACpC,MAAMkD,yCAAyC,GAC3C3B,gCAAgC,IAAI0B,WAAW,EAAE1B,gCAAgC,IAAI,KAAK;EAE9F,MAAM4B,8BAA8B,GAAGpD,4BAA4B,CAC/DmD,yCAAyC,IAAI,CAACjC,UAClD,CAAC;EAED,MAAMmC,gBAAgB,GAAGzD,OAAO,CAAC,MAAMM,qBAAqB,CAACkB,KAAK,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAC7E,MAAMkC,WAAW,GAAGvD,cAAc,CAAC4C,eAAe,CAAC;EAEnDhD,SAAS,CAAC,MAAM;IACZ,IAAI2D,WAAW,EAAErB,aAAa,CAACqB,WAAW,CAAC;EAC/C,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAEjB,MAAMC,UAAU,GAAG7D,WAAW,CACzB8D,UAAkB,IAAK;IACpB,MAAMC,GAAG,GAAGrC,KAAK,CAACsC,KAAK,CAAC7B,eAAe,GAAG,CAAC,CAAC,CAAC8B,GAAG,CAAC,CAAC;MAAEC;IAAG,CAAC,KAAKA,EAAE,CAAC;IAEhE,MAAMC,KAAK,GAAGJ,GAAG,CAACK,IAAI,CAAEF,EAAE,IAAKA,EAAE,KAAKJ,UAAU,CAAC;IAEjD,IAAIK,KAAK,EAAE;MACPzB,YAAY,CAAC,MAAM,CAAC;MACpBE,iBAAiB,CAACuB,KAAK,CAAC;MAExB;IACJ;IAEAzB,YAAY,CAACoB,UAAU,CAAC;EAC5B,CAAC,EACD,CAACpC,KAAK,EAAES,eAAe,CAC3B,CAAC;EAED,MAAMkC,cAAc,GAAGnE,OAAO,CAC1B,MAAMoC,UAAU,IAAIgC,IAAI,CAACC,KAAK,CAACjC,UAAU,CAACE,KAAK,GAAGmB,gBAAgB,CAAC,GAAGjC,KAAK,CAACW,MAAM,GAAG,CAAC,EACtF,CAACsB,gBAAgB,EAAEjC,KAAK,CAACW,MAAM,EAAEC,UAAU,CAC/C,CAAC;EAED,MAAMkC,kBAAkB,GAAGtE,OAAO,CAAC,MAAM;IACrC,IAAIuE,UAAU,GAAG,CAAC;IAClB,IAAIC,KAAK,GAAG,CAAC;IAEb,OAAOA,KAAK,GAAGhD,KAAK,CAACW,MAAM,EAAE;MACzB,MAAMsC,YAAY,GAAGjD,KAAK,CAACsC,KAAK,CAAC,CAAC,EAAEU,KAAK,GAAG,CAAC,CAAC;MAC9C,MAAME,eAAe,GAAGpE,qBAAqB,CAACmE,YAAY,CAAC,GAAG,CAAC;MAE/D,IAAIF,UAAU,GAAGG,eAAe,GAAGtC,UAAU,CAACE,KAAK,EAAE;MAErDiC,UAAU,IAAIG,eAAe;MAC7BF,KAAK,EAAE;IACX;IAEA,OAAOA,KAAK;EAChB,CAAC,EAAE,CAAChD,KAAK,EAAEY,UAAU,CAACE,KAAK,CAAC,CAAC;EAE7B,MAAMqC,SAAS,GAAG3E,OAAO,CAAC,MAAM;IAC5B,MAAM4E,WAAW,GAAGxC,UAAU,EAAEE,KAAK,IAAI,CAAC;IAC1C,MAAMuC,SAAS,GAAGrD,KAAK,CAACW,MAAM,IAAI,CAAC;IAEnCD,kBAAkB,CAACiC,cAAc,GAAGG,kBAAkB,GAAGO,SAAS,CAAC;IAEnE,OAAOD,WAAW,IAAIT,cAAc,GAAGG,kBAAkB,GAAGO,SAAS,CAAC;EAC1E,CAAC,EAAE,CAACV,cAAc,EAAE3C,KAAK,CAACW,MAAM,EAAEmC,kBAAkB,EAAElC,UAAU,EAAEE,KAAK,CAAC,CAAC;EAEzEvC,SAAS,CAAC,MAAM;IACZ,IAAIqC,UAAU,EAAE;MACZ,MAAMwC,WAAW,GAAGD,SAAS,IAAInD,KAAK,CAACW,MAAM,GAAG,CAAC,CAAC;MAElD,MAAMqC,KAAK,GAAGJ,IAAI,CAACC,KAAK,CAACjC,UAAU,CAACE,KAAK,GAAGqC,SAAS,CAAC;MAEtD7C,YAAY,CAAC;QAAEC,IAAI,EAAE,CAAC;QAAEC,KAAK,EAAEmC,cAAc,GAAGQ,SAAS,GAAGH,KAAK,GAAGI;MAAY,CAAC,CAAC;IACtF;EACJ,CAAC,EAAE,CAACT,cAAc,EAAEQ,SAAS,EAAEnD,KAAK,CAACW,MAAM,EAAEC,UAAU,CAAC,CAAC;EAEzD,MAAM0C,SAAS,GAAGhF,WAAW,CACzB,MAAOiF,CAAS,IAAK;IACjB,MAAM3B,OAAO,CACTD,KAAK,CAAC6B,OAAO,EACb;MAAED;IAAE,CAAC,EACL;MACIE,IAAI,EAAE,OAAO;MACbC,QAAQ,EAAE;IACd,CACJ,CAAC;EACL,CAAC,EACD,CAAC9B,OAAO,EAAED,KAAK,CACnB,CAAC;EAED,MAAMgC,eAAe,GAAGrF,WAAW,CAC9BsF,KAAa,IAAK;IACfxC,eAAe,CAACwC,KAAK,CAAC;IAEtB,KAAKN,SAAS,CAACH,SAAS,GAAGS,KAAK,CAAC;EACrC,CAAC,EACD,CAACN,SAAS,EAAEH,SAAS,CACzB,CAAC;EAED5E,SAAS,CAAC,MAAM;IACZ,IAAI,OAAO2B,gBAAgB,KAAK,QAAQ,EAAE;MACtC,IAAI0D,KAAK,GAAG5D,KAAK,CAAC6D,SAAS,CAAC,CAAC;QAAErB;MAAG,CAAC,KAAKA,EAAE,KAAKtC,gBAAgB,CAAC;MAEhEc,YAAY,CAACd,gBAAgB,CAAC;MAE9BiC,UAAU,CAACjC,gBAAgB,CAAC;MAE5B,IAAIF,KAAK,CAACW,MAAM,GAAGF,eAAe,IAAImD,KAAK,GAAGnD,eAAe,GAAG,CAAC,EAAE;QAC/DmD,KAAK,GAAGnD,eAAe,GAAG,CAAC;MAC/B;MAEA,IAAImD,KAAK,IAAI,CAAC,EAAE;QACZD,eAAe,CAACC,KAAK,CAAC;MAC1B;IACJ;EACJ,CAAC,EAAE,CACCN,SAAS,EACTjD,SAAS,CAACG,KAAK,EACfmC,cAAc,EACdQ,SAAS,EACTnD,KAAK,EACLE,gBAAgB,EAChByD,eAAe,EACfxB,UAAU,EACV1B,eAAe,CAClB,CAAC;EAEF,MAAMqD,WAAW,GAAGxF,WAAW,CAC3B,CAACkE,EAAU,EAAEoB,KAAa,KAAK;IAC3B,IAAI9D,UAAU,EAAE;MACZ;IACJ;IAEA,IAAIqB,YAAY,KAAKyC,KAAK,IAAI5D,KAAK,CAACW,MAAM,KAAK,CAAC,EAAE;MAC9C,MAAMoD,SAAS,GAAG/D,KAAK,CAAC0C,IAAI,CAAC,CAACsB,CAAC,EAAEH,SAAS,KAAKD,KAAK,KAAKC,SAAS,CAAC;MACnE,IAAI,CAACE,SAAS,EAAE;MAEhB5B,UAAU,CAAC4B,SAAS,CAACvB,EAAE,CAAC;MACxBmB,eAAe,CAAC3D,KAAK,CAACiE,OAAO,CAACF,SAAS,CAAC,CAAC;MACzC9D,QAAQ,GAAG8D,SAAS,CAACvB,EAAE,CAAC;MACxB;IACJ;IAEAL,UAAU,CAACK,EAAE,CAAC;IAEd,IAAI,OAAOvC,QAAQ,KAAK,UAAU,IAAIuC,EAAE,KAAK,MAAM,EAAE;MACjDvC,QAAQ,CAACuC,EAAE,CAAC;IAChB;IAEA,IAAIf,QAAQ,CAAC+B,OAAO,EAAE;MAClB,IAAIhB,EAAE,KAAK,MAAM,EAAE;QACff,QAAQ,CAAC+B,OAAO,CAACU,IAAI,CAAC,CAAC;MAC3B,CAAC,MAAM;QACHzC,QAAQ,CAAC+B,OAAO,CAACW,IAAI,CAAC,CAAC;MAC3B;IACJ;IAEAR,eAAe,CAACC,KAAK,CAAC;EAC1B,CAAC,EACD,CAACzC,YAAY,EAAErB,UAAU,EAAEE,KAAK,EAAEC,QAAQ,EAAE0D,eAAe,EAAExB,UAAU,CAC3E,CAAC;EAED,MAAMiC,eAAe,GAAG5F,OAAO,CAAC,MAAM;IAClC,IAAI6F,KAAK;IAET,IAAItE,WAAW,EAAE;MACbsE,KAAK,GAAGxC,KAAK,CAAC,KAAK,CAAC;IACxB,CAAC,MAAM;MACHwC,KAAK,GAAGxC,KAAK,CAACyC,qBAAqB,IAAIzC,KAAK,CAAC,KAAK,CAAC;IACvD;IAEA,IAAIA,KAAK,CAAC0C,YAAY,KAAK,GAAG,EAAE;MAC5BF,KAAK,GAAG,QAAQxC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM;IAChD;IAEA,OAAOwC,KAAK;EAChB,CAAC,EAAE,CAACtE,WAAW,EAAE8B,KAAK,CAAC,CAAC;EAExB,MAAM2C,oBAAoB,GAAGhG,OAAO,CAAC,MAAM;IACvC,IAAI6F,KAAK;IAET,IAAItE,WAAW,EAAE;MACbsE,KAAK,GAAGxC,KAAK,CAAC,KAAK,CAAC;IACxB,CAAC,MAAM;MACHwC,KAAK,GAAG,QAAQxC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS;IACnD;IAEA,IAAIA,KAAK,CAAC0C,YAAY,KAAK,GAAG,EAAE;MAC5BF,KAAK,GAAG,QAAQxC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM;IAChD;IAEA,OAAOwC,KAAK;EAChB,CAAC,EAAE,CAACtE,WAAW,EAAE8B,KAAK,CAAC,CAAC;EAExB,MAAM4C,UAAU,GAAGjG,OAAO,CAAC,MAAMwB,KAAK,CAACsC,KAAK,CAAC7B,eAAe,GAAG,CAAC,CAAC,EAAE,CAACT,KAAK,EAAES,eAAe,CAAC,CAAC;EAE5F,MAAMiE,UAAU,GAAGpG,WAAW,CAAC,MAAM;IACjC,MAAMqG,KAAK,GAAGpD,eAAe,CAACiC,OAAO,EAAEoB,aAAa,CAChD,mCACJ,CAA0B;IAE1BD,KAAK,EAAEE,KAAK,CAAC,CAAC;EAClB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAM;IAAEC;EAAmB,CAAC,GAAGnF,4BAA4B,CAAC;IACxD0B,WAAW;IACXoD,UAAU;IACVxD,cAAc;IACdR,eAAe;IACfiB,aAAa;IACbD,QAAQ;IACRiD,UAAU;IACVK,iBAAiB,EAAEjB;EACvB,CAAC,CAAC;EAEF,MAAM;IAAEkB;EAAmB,CAAC,GAAGpF,4BAA4B,CAAC;IACxDmB,SAAS;IACTI,YAAY;IACZV,eAAe;IACfT,KAAK;IACLiF,iBAAiB,EAAEnB;EACvB,CAAC,CAAC;EAEF,MAAMoB,OAAO,GAAG1G,OAAO,CAAC,MAAM;IAC1B,IAAIwB,KAAK,CAACW,MAAM,GAAGF,eAAe,EAAE;MAChC,MAAM0E,QAAQ,GAAGnF,KAAK,CAACsC,KAAK,CAAC,CAAC,EAAE7B,eAAe,GAAG,CAAC,CAAC;MACpD,MAAM2E,UAAU,GAAGpF,KAAK,CAACsC,KAAK,CAAC7B,eAAe,GAAG,CAAC,CAAC;MAEnD,MAAM4E,QAAQ,GAAGF,QAAQ,CAAC5C,GAAG,CAAC,CAAC;QAAEC,EAAE;QAAE8C;MAAK,CAAC,EAAE1B,KAAK,kBAC9CvF,KAAA,CAAAkH,aAAA,CAACjG,sBAAsB;QACnBkG,YAAY,EAAEzF,WAAY;QAC1B0F,MAAM,EAAEtC,SAAU;QAClBuC,GAAG,EAAE,iBAAiBlD,EAAE,EAAG;QAC3BmD,OAAO,EAAEA,CAAA,KAAM7B,WAAW,CAACtB,EAAE,EAAEoB,KAAK;MAAE,GAErC0B,IACmB,CAC3B,CAAC;MAEF,MAAMM,YAAY,GAAGR,UAAU,CAAC7C,GAAG,CAAC,CAAC;QAAEC,EAAE;QAAE8C;MAAK,CAAC,EAAEO,UAAU,kBACzDxH,KAAA,CAAAkH,aAAA,CAAC/F,kCAAkC;QAC/BkG,GAAG,EAAE,iBAAiBlD,EAAE,EAAG;QAC3BmD,OAAO,EAAEA,CAAA,KAAM7B,WAAW,CAACtB,EAAE,EAAE2C,QAAQ,CAACxE,MAAM,CAAE;QAChDmF,SAAS,EAAEhB,kBAAmB;QAC9BiB,GAAG,EAAGC,OAA8B,IAAK;UACrCtE,aAAa,CAAC8B,OAAO,CAACqC,UAAU,CAAC,GAAGG,OAAO;QAC/C,CAAE;QACFC,QAAQ,EAAE,CAAE;QACZC,IAAI,EAAC,QAAQ;QACbC,WAAW,EAAE3D,EAAE,KAAKvB;MAAe,GAElCqE,IAC+B,CACvC,CAAC;MAEF,MAAM9C,EAAE,GAAG,MAAM;MAEjB6C,QAAQ,CAACe,IAAI,cACT/H,KAAA,CAAAkH,aAAA,CAACjG,sBAAsB;QACnBkG,YAAY,EAAEzF,WAAY;QAC1B0F,MAAM,EAAEtC,SAAU;QAClBuC,GAAG,EAAE,iBAAiBlD,EAAE;MAAG,gBAE3BnE,KAAA,CAAAkH,aAAA,CAACrG,KAAK;QACF6G,GAAG,EAAEtE,QAAS;QACd4E,MAAM,EAAEA,CAAA,KAAM;UACV/E,cAAc,CAAC,IAAI,CAAC;QACxB,CAAE;QACFgF,MAAM,EAAEA,CAAA,KAAM;UACVhF,cAAc,CAAC,KAAK,CAAC;UACrBI,aAAa,CAAC8B,OAAO,GAAG,EAAE;QAC9B,CAAE;QACF+C,OAAO,eACHlI,KAAA,CAAAkH,aAAA,CAAChG,8BAA8B;UAACuG,SAAS,EAAEhB;QAAmB,GACzDc,YAC2B;MACnC,gBAEDvH,KAAA,CAAAkH,aAAA,CAACtG,IAAI;QAACuH,KAAK,EAAE,CAAC,gBAAgB,CAAE;QAACnC,KAAK,EAAC;MAAO,CAAE,CAC7C,CACa,CAC5B,CAAC;MAED,OAAOgB,QAAQ;IACnB;IACA,OAAOrF,KAAK,CAACuC,GAAG,CAAC,CAAC;MAAEC,EAAE;MAAE8C;IAAK,CAAC,kBAC1BjH,KAAA,CAAAkH,aAAA,CAACjG,sBAAsB;MACnBkG,YAAY,EAAEzF,WAAY;MAC1B0F,MAAM,EAAEtC,SAAU;MAClBuC,GAAG,EAAE,iBAAiBlD,EAAE;IAAG,GAE1B8C,IACmB,CAC3B,CAAC;EACN,CAAC,EAAE,CACCrE,cAAc,EACd6C,WAAW,EACXgB,kBAAkB,EAClB/E,WAAW,EACXoD,SAAS,EACTnD,KAAK,EACLS,eAAe,CAClB,CAAC;EAEF,MAAMgG,aAAa,GAAGjI,OAAO,CAAC,MAAM;IAChC,IAAIwB,KAAK,CAACW,MAAM,GAAGF,eAAe,EAAE;MAChC,MAAM0E,QAAQ,GAAGnF,KAAK,CAACsC,KAAK,CAAC,CAAC,EAAE7B,eAAe,GAAG,CAAC,CAAC;MAEpD,MAAM4E,QAAQ,GAAGF,QAAQ,CAAC5C,GAAG,CAAC,CAAC;QAAEC,EAAE;QAAE8C;MAAK,CAAC,EAAE1B,KAAK,kBAC9CvF,KAAA,CAAAkH,aAAA,CAACjG,sBAAsB;QACnBkG,YAAY,EAAEzF,WAAY;QAC1B0F,MAAM,EAAEtC,SAAU;QAClBuC,GAAG,EAAE,wBAAwBlD,EAAE,EAAG;QAClCmD,OAAO,EAAEA,CAAA,KAAM7B,WAAW,CAACtB,EAAE,EAAEoB,KAAK;MAAE,GAErC0B,IACmB,CAC3B,CAAC;MAEF,MAAM9C,EAAE,GAAG,MAAM;MAEjB6C,QAAQ,CAACe,IAAI,cACT/H,KAAA,CAAAkH,aAAA,CAACjG,sBAAsB;QACnBkG,YAAY,EAAEzF,WAAY;QAC1B0F,MAAM,EAAEtC,SAAU;QAClBuC,GAAG,EAAE,wBAAwBlD,EAAE,EAAG;QAClCmD,OAAO,EAAEA,CAAA,KAAM7B,WAAW,CAACtB,EAAE,EAAE2C,QAAQ,CAACxE,MAAM;MAAE,gBAEhDtC,KAAA,CAAAkH,aAAA,CAACtG,IAAI;QAACuH,KAAK,EAAE,CAAC,gBAAgB;MAAE,CAAE,CACd,CAC5B,CAAC;MAED,OAAOnB,QAAQ;IACnB;IACA,OAAOrF,KAAK,CAACuC,GAAG,CAAC,CAAC;MAAEC,EAAE;MAAE8C;IAAK,CAAC,EAAE1B,KAAK,kBACjCvF,KAAA,CAAAkH,aAAA,CAACjG,sBAAsB;MACnBkG,YAAY,EAAEzF,WAAY;MAC1B0F,MAAM,EAAEtC,SAAU;MAClBuC,GAAG,EAAE,wBAAwBlD,EAAE,EAAG;MAClCmD,OAAO,EAAEA,CAAA,KAAM7B,WAAW,CAACtB,EAAE,EAAEoB,KAAK;IAAE,GAErC0B,IACmB,CAC3B,CAAC;EACN,CAAC,EAAE,CAACxB,WAAW,EAAE/D,WAAW,EAAEoD,SAAS,EAAEnD,KAAK,EAAES,eAAe,CAAC,CAAC;;EAEjE;AACJ;AACA;EACI,MAAMiG,UAAU,GAAGlI,OAAO,CAAC,MAAM;IAC7B,MAAMmI,MAAM,GAAG,CAAC,CAAC,CAAC;IAElB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG5G,KAAK,CAACW,MAAM,EAAEiG,CAAC,EAAE,EAAE;MACnCD,MAAM,CAACP,IAAI,CAACjD,SAAS,GAAGyD,CAAC,CAAC;IAC9B;IAEA,OAAOD,MAAM;EACjB,CAAC,EAAE,CAACxD,SAAS,EAAEnD,KAAK,CAACW,MAAM,CAAC,CAAC;EAE7B,MAAMkG,eAAe,GAAGvI,WAAW,CAAC,MAAM;IACtC,KAAKJ,uBAAuB,CAAC,KAAK,CAAC;EACvC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAM4I,aAAa,GAAGxI,WAAW,CAAC,MAAM;IACpC,KAAKJ,uBAAuB,CAAC,IAAI,CAAC;IAElC,MAAM6I,QAAQ,GAAG/H,gBAAgB,CAAC;MAAE2C,KAAK;MAAEwB;IAAU,CAAC,CAAC;IAEvD,IAAI,CAAC4D,QAAQ,EAAE;MACX;IACJ;IAEA,MAAM;MAAEC,MAAM;MAAEzG;IAAK,CAAC,GAAGwG,QAAQ;IAEjC,IAAIE,UAAU,GAAG,CAAC;IAElB,IAAIzF,sBAAsB,CAACgC,OAAO,EAAE;MAChCyD,UAAU,GAAGzF,sBAAsB,CAACgC,OAAO,CAACyD,UAAU;MAEtDzF,sBAAsB,CAACgC,OAAO,CAACyD,UAAU,GAAGlI,eAAe,CAAC;QACxD2H,UAAU;QACVK,QAAQ,EAAEC,MAAM;QAChBC,UAAU,EAAEA,UAAU,GAAG1G;MAC7B,CAAC,CAAC,CAAC2G,YAAY;IACnB;IAEA,MAAM;MAAEC;IAAa,CAAC,GAAGpI,eAAe,CAAC;MACrC2H,UAAU;MACVK,QAAQ,EAAEC,MAAM;MAChBC;IACJ,CAAC,CAAC;IAEF,MAAM;MAAEC;IAAa,CAAC,GAAGnI,eAAe,CAAC;MACrC2H,UAAU;MACVK,QAAQ,EAAEC,MAAM;MAChBC,UAAU,EAAE;IAChB,CAAC,CAAC;IACF,MAAMG,YAAY,GAAGpH,KAAK,CAACW,MAAM,GAAGF,eAAe;IAEnD,IAAIyG,YAAY,IAAI,CAAC,IAAIC,YAAY,IAAI,CAAC,EAAE;MACxC,KAAK7D,SAAS,CAAC4D,YAAY,CAAC;MAE5B,IAAI1E,EAAE;MAEN,IAAI4E,YAAY,IAAID,YAAY,KAAK1G,eAAe,GAAG,CAAC,EAAE;QACtD+B,EAAE,GAAG,MAAM;MACf,CAAC,MAAM;QACHA,EAAE,GAAGxC,KAAK,CAACmH,YAAY,CAAC,EAAE3E,EAAE;MAChC;MAEA,IAAIf,QAAQ,CAAC+B,OAAO,EAAE;QAClB,IAAIhB,EAAE,KAAK,MAAM,EAAE;UACff,QAAQ,CAAC+B,OAAO,CAACU,IAAI,CAAC,CAAC;QAC3B,CAAC,MAAM;UACHzC,QAAQ,CAAC+B,OAAO,CAACW,IAAI,CAAC,CAAC;QAC3B;MACJ;MAEA,IAAI,OAAOlE,QAAQ,KAAK,UAAU,IAAIuC,EAAE,EAAE;QACtCL,UAAU,CAACK,EAAE,CAAC;QACdpB,eAAe,CAAC+F,YAAY,CAAC;QAC7B,IAAI3E,EAAE,KAAK,MAAM,EAAEvC,QAAQ,CAACuC,EAAE,CAAC;MACnC;IACJ;EACJ,CAAC,EAAE,CAACc,SAAS,EAAEH,SAAS,EAAEnD,KAAK,EAAEC,QAAQ,EAAE0B,KAAK,EAAEQ,UAAU,EAAE1B,eAAe,EAAEiG,UAAU,CAAC,CAAC;EAE3F,OAAOlI,OAAO,CACV,mBACIH,KAAA,CAAAkH,aAAA,CAACnG,kBAAkB;IAACiI,WAAW,EAAEvH,UAAW;IAACiG,GAAG,EAAExE;EAAgB,gBAC9DlD,KAAA,CAAAkH,aAAA,CAAClG,gCAAgC;IAACiI,YAAY;EAAA,GACzCb,aAC6B,CAAC,eACnCpI,KAAA,CAAAkH,aAAA,CAACpG,6BAA6B;IAC1BoI,UAAU,EAAEpH,SAAU;IACtB4F,GAAG,EAAEpE,KAAM;IACX6F,IAAI,EAAE1H,UAAU,GAAG,KAAK,GAAG,GAAI;IAC/B2H,WAAW,EAAE,CAAE;IACfC,eAAe,EACX/E,cAAc,GACR;MAAE,GAAGtC,SAAS;MAAEG,KAAK,EAAEH,SAAS,CAACG,KAAK,GAAG2C;IAAU,CAAC,GACpD;MAAE,GAAG9C;IAAU,CACxB;IACDoF,MAAM,EAAEtC,SAAU;IAClBwE,SAAS,EAAEb,aAAc;IACzBc,WAAW,EAAEf,eAAgB;IAC7BlB,OAAO,EAAEA,CAAA,KAAM7B,WAAW,CAAC/C,SAAS,EAAEI,YAAY,CAAE;IACpD0G,KAAK,EAAE;MAAEzD,eAAe,EAAEI;IAAqB,CAAE;IACjD,4BAAyB,MAAM;IAC/ByB,QAAQ,EACJlE,yCAAyC,IAAI,CAACjC,UAAU,GAAG,CAAC,GAAGgI,SAClE;IACD5B,IAAI,EACAnE,yCAAyC,IAAI,CAACjC,UAAU,GAClD,QAAQ,GACRgI,SACT;IACDhC,SAAS,EACL/D,yCAAyC,IAAI,CAACjC,UAAU,GAClDkF,kBAAkB,GAClB8C,SACT;IACDC,+BAA+B,EAAE/F;EAA+B,CACnE,CAAC,eACF3D,KAAA,CAAAkH,aAAA,CAAC9F,yBAAyB;IACtB8H,UAAU,EAAEpH,SAAU;IACtBkH,WAAW,EAAEvH,UAAW;IACxB2F,MAAM,EAAE,CAAC9C,cAAc,GAAGtC,SAAS,CAACG,KAAK,GAAG2C,SAAS,GAAG9C,SAAS,CAACG,KAAM;IACxEuF,GAAG,EAAEvE,sBAAuB;IAC5BqG,KAAK,EAAE;MAAEzD;IAAgB;EAAE,gBAE3B/F,KAAA,CAAAkH,aAAA,CAACpH,eAAe,qBACZE,KAAA,CAAAkH,aAAA,CAAClG,gCAAgC,QAC5B6F,OAC6B,CACrB,CACM,CACX,CACvB,EACD,CACId,eAAe,EACfc,OAAO,EACPnE,SAAS,EACTI,YAAY,EACZd,SAAS,EACTyD,WAAW,EACXgD,aAAa,EACbD,eAAe,EACf7B,kBAAkB,EAClBlF,UAAU,EACVK,SAAS,EACTwC,cAAc,EACdQ,SAAS,EACTsD,aAAa,EACb9E,KAAK,EACLI,yCAAyC,EACzCC,8BAA8B,EAC9BwC,oBAAoB,CAE5B,CAAC;AACL,CAAC;AAED3E,YAAY,CAACmI,WAAW,GAAG,cAAc;AAEzC,eAAenI,YAAY","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SliderButton.js","names":["setRefreshScrollEnabled","AnimatePresence","useAnimate","React","useCallback","useEffect","useMemo","useRef","useState","useElementSize","useKeyboardFocusHighlighting","useColorScheme","calculateBiggestWidth","getNearestPoint","getThumbPosition","Icon","Popup","StyledMotionSliderButtonThumb","StyledSliderButton","StyledSliderButtonButtonsWrapper","StyledSliderButtonItem","StyledSliderButtonPopupContent","StyledSliderButtonPopupContentItem","StyledSliderButtonWrapper","useTheme","useSliderButtonPopupKeyboard","useSliderButtonThumbKeyboard","SliderButton","isDisabled","isSecondary","items","onChange","selectedButtonId","isRounded","shouldEnableKeyboardHighlighting","dragRange","setDragRange","left","right","shownItemsCount","setShownItemsCount","length","sliderSize","setSliderSize","width","currentId","setCurrentId","currentPopupId","setCurrentPopupId","currentIndex","setCurrentIndex","isPopupOpen","setIsPopupOpen","sliderButtonRef","sliderButtonWrapperRef","popupRef","popupItemRefs","scope","animate","theme","colorScheme","shouldEnableKeyboardHighlightingEffective","shouldShowKeyboardHighlighting","initialItemWidth","elementSize","setPopupId","selectedId","ids","slice","map","id","newId","find","isSliderBigger","Math","floor","maxShownItemsCount","totalWidth","count","visibleItems","currentMaxWidth","itemWidth","sliderWidth","itemCount","animation","x","current","type","duration","setItemPosition","index","findIndex","handleClick","otherItem","_","indexOf","show","hide","backgroundColor","color","buttonBackgroundColor","buttonDesign","thumbBackgroundColor","popupItems","focusThumb","thumb","querySelector","focus","handlePopupKeyDown","onSelectPopupItem","handleThumbKeyDown","onSelectThumbItem","buttons","newItems","otherItems","elements","text","createElement","$isSecondary","$width","key","onClick","popupContent","popupIndex","onKeyDown","ref","element","tabIndex","role","$isSelected","push","onShow","onHide","content","icons","pseudoButtons","snapPoints","points","i","handleDragStart","handleDragEnd","position","middle","scrollLeft","nearestPoint","nearestIndex","hasMoreItems","$isDisabled","$isInvisible","$isRounded","drag","dragElastic","dragConstraints","onDragEnd","onDragStart","style","undefined","$shouldShowKeyboardHighlighting","displayName"],"sources":["../../../../src/components/slider-button/SliderButton.tsx"],"sourcesContent":["import { setRefreshScrollEnabled } from 'chayns-api';\nimport { AnimatePresence, useAnimate } from 'motion/react';\nimport React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useElementSize } from '../../hooks/element';\nimport { useKeyboardFocusHighlighting } from '../../hooks/useKeyboardFocusHighlighting';\nimport { useColorScheme } from '../color-scheme-provider/ColorSchemeProvider';\nimport { PopupRef } from '../../types/popup';\nimport { calculateBiggestWidth } from '../../utils/calculate';\nimport { getNearestPoint, getThumbPosition } from '../../utils/sliderButton';\nimport Icon from '../icon/Icon';\nimport Popup from '../popup/Popup';\nimport {\n StyledMotionSliderButtonThumb,\n StyledSliderButton,\n StyledSliderButtonButtonsWrapper,\n StyledSliderButtonItem,\n StyledSliderButtonPopupContent,\n StyledSliderButtonPopupContentItem,\n StyledSliderButtonWrapper,\n} from './SliderButton.styles';\nimport { useTheme } from 'styled-components';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\nimport { SliderButtonProps } from './SliderButton.types';\nimport { useSliderButtonPopupKeyboard } from './useSliderButtonPopupKeyboard';\nimport { useSliderButtonThumbKeyboard } from './useSliderButtonThumbKeyboard';\n\nconst SliderButton: FC<SliderButtonProps> = ({\n isDisabled,\n isSecondary,\n items,\n onChange,\n selectedButtonId,\n isRounded = false,\n shouldEnableKeyboardHighlighting,\n}) => {\n const [dragRange, setDragRange] = useState({ left: 0, right: 0 });\n const [shownItemsCount, setShownItemsCount] = useState(items.length);\n const [sliderSize, setSliderSize] = useState({ width: 0 });\n const [currentId, setCurrentId] = useState('');\n const [currentPopupId, setCurrentPopupId] = useState('');\n const [currentIndex, setCurrentIndex] = useState(0);\n const [isPopupOpen, setIsPopupOpen] = useState(false);\n\n const sliderButtonRef = useRef<HTMLDivElement>(null);\n const sliderButtonWrapperRef = useRef<HTMLDivElement>(null);\n const popupRef = useRef<PopupRef>(null);\n const popupItemRefs = useRef<Array<HTMLDivElement | null>>([]);\n\n const [scope, animate] = useAnimate();\n\n const theme = useTheme() as Theme;\n const colorScheme = useColorScheme();\n const shouldEnableKeyboardHighlightingEffective =\n shouldEnableKeyboardHighlighting ?? colorScheme?.shouldEnableKeyboardHighlighting ?? false;\n\n const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(\n shouldEnableKeyboardHighlightingEffective && !isDisabled,\n );\n\n const initialItemWidth = useMemo(() => calculateBiggestWidth(items), [items]);\n const elementSize = useElementSize(sliderButtonRef);\n\n useEffect(() => {\n if (elementSize) setSliderSize(elementSize);\n }, [elementSize]);\n\n const setPopupId = useCallback(\n (selectedId: string) => {\n const ids = items.slice(shownItemsCount - 1).map(({ id }) => id);\n\n const newId = ids.find((id) => id === selectedId);\n\n if (newId) {\n setCurrentId('more');\n setCurrentPopupId(newId);\n\n return;\n }\n\n setCurrentId(selectedId);\n },\n [items, shownItemsCount],\n );\n\n const isSliderBigger = useMemo(\n () => sliderSize && Math.floor(sliderSize.width / initialItemWidth) < items.length - 1,\n [initialItemWidth, items.length, sliderSize],\n );\n\n const maxShownItemsCount = useMemo(() => {\n let totalWidth = 0;\n let count = 0;\n\n while (count < items.length) {\n const visibleItems = items.slice(0, count + 1);\n const currentMaxWidth = calculateBiggestWidth(visibleItems) + 8;\n\n if (totalWidth + currentMaxWidth > sliderSize.width) break;\n\n totalWidth += currentMaxWidth;\n count++;\n }\n\n return count;\n }, [items, sliderSize.width]);\n\n const itemWidth = useMemo(() => {\n const sliderWidth = sliderSize?.width || 0;\n const itemCount = items.length || 1;\n\n setShownItemsCount(isSliderBigger ? maxShownItemsCount : itemCount);\n\n return sliderWidth / (isSliderBigger ? maxShownItemsCount : itemCount);\n }, [isSliderBigger, items.length, maxShownItemsCount, sliderSize?.width]);\n\n useEffect(() => {\n if (sliderSize) {\n const sliderWidth = itemWidth * (items.length - 1);\n\n const count = Math.floor(sliderSize.width / itemWidth);\n\n setDragRange({ left: 0, right: isSliderBigger ? itemWidth * count : sliderWidth });\n }\n }, [isSliderBigger, itemWidth, items.length, sliderSize]);\n\n const animation = useCallback(\n async (x: number) => {\n await animate(\n scope.current,\n { x },\n {\n type: 'tween',\n duration: 0.2,\n },\n );\n },\n [animate, scope],\n );\n\n const setItemPosition = useCallback(\n (index: number) => {\n setCurrentIndex(index);\n\n void animation(itemWidth * index);\n },\n [animation, itemWidth],\n );\n\n useEffect(() => {\n if (typeof selectedButtonId === 'string') {\n let index = items.findIndex(({ id }) => id === selectedButtonId);\n\n setCurrentId(selectedButtonId);\n\n setPopupId(selectedButtonId);\n\n if (items.length > shownItemsCount && index > shownItemsCount - 1) {\n index = shownItemsCount - 1;\n }\n\n if (index >= 0) {\n setItemPosition(index);\n }\n }\n }, [\n animation,\n dragRange.right,\n isSliderBigger,\n itemWidth,\n items,\n selectedButtonId,\n setItemPosition,\n setPopupId,\n shownItemsCount,\n ]);\n\n const handleClick = useCallback(\n (id: string, index: number) => {\n if (isDisabled) {\n return;\n }\n\n if (currentIndex === index && items.length === 2) {\n const otherItem = items.find((_, findIndex) => index !== findIndex);\n if (!otherItem) return;\n\n setPopupId(otherItem.id);\n setItemPosition(items.indexOf(otherItem));\n onChange?.(otherItem.id);\n return;\n }\n\n setPopupId(id);\n\n if (typeof onChange === 'function' && id !== 'more') {\n onChange(id);\n }\n\n if (popupRef.current) {\n if (id === 'more') {\n popupRef.current.show();\n } else {\n popupRef.current.hide();\n }\n }\n\n setItemPosition(index);\n },\n [currentIndex, isDisabled, items, onChange, setItemPosition, setPopupId],\n );\n\n const backgroundColor = useMemo(() => {\n let color;\n\n if (isSecondary) {\n color = theme['202'];\n } else {\n color = theme.buttonBackgroundColor ?? theme['408'];\n }\n\n if (theme.buttonDesign === '2') {\n color = `rgba(${theme['102-rgb'] ?? ''}, 0)`;\n }\n\n return color;\n }, [isSecondary, theme]);\n\n const thumbBackgroundColor = useMemo(() => {\n let color;\n\n if (isSecondary) {\n color = theme['207'];\n } else {\n color = `rgba(${theme['405-rgb'] ?? ''}, 0.75)`;\n }\n\n if (theme.buttonDesign === '2') {\n color = `rgba(${theme['102-rgb'] ?? ''}, 0)`;\n }\n\n return color;\n }, [isSecondary, theme]);\n\n const popupItems = useMemo(() => items.slice(shownItemsCount - 1), [items, shownItemsCount]);\n\n const focusThumb = useCallback(() => {\n const thumb = sliderButtonRef.current?.querySelector(\n '[data-slider-button-thumb=\"true\"]',\n ) as HTMLDivElement | null;\n\n thumb?.focus();\n }, []);\n\n const { handlePopupKeyDown } = useSliderButtonPopupKeyboard({\n isPopupOpen,\n popupItems,\n currentPopupId,\n shownItemsCount,\n popupItemRefs,\n popupRef,\n focusThumb,\n onSelectPopupItem: handleClick,\n });\n\n const { handleThumbKeyDown } = useSliderButtonThumbKeyboard({\n currentId,\n currentIndex,\n shownItemsCount,\n items,\n onSelectThumbItem: handleClick,\n });\n\n const buttons = useMemo(() => {\n if (items.length > shownItemsCount) {\n const newItems = items.slice(0, shownItemsCount - 1);\n const otherItems = items.slice(shownItemsCount - 1);\n\n const elements = newItems.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n\n const popupContent = otherItems.map(({ id, text }, popupIndex) => (\n <StyledSliderButtonPopupContentItem\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, newItems.length)}\n onKeyDown={handlePopupKeyDown}\n ref={(element: HTMLDivElement | null) => {\n popupItemRefs.current[popupIndex] = element;\n }}\n tabIndex={-1}\n role=\"button\"\n $isSelected={id === currentPopupId}\n >\n {text}\n </StyledSliderButtonPopupContentItem>\n ));\n\n const id = 'more';\n\n elements.push(\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n >\n <Popup\n ref={popupRef}\n onShow={() => {\n setIsPopupOpen(true);\n }}\n onHide={() => {\n setIsPopupOpen(false);\n popupItemRefs.current = [];\n }}\n content={\n <StyledSliderButtonPopupContent onKeyDown={handlePopupKeyDown}>\n {popupContent}\n </StyledSliderButtonPopupContent>\n }\n >\n <Icon icons={['fa fa-ellipsis']} color=\"white\" />\n </Popup>\n </StyledSliderButtonItem>,\n );\n\n return elements;\n }\n return items.map(({ id, text }) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [\n currentPopupId,\n handleClick,\n handlePopupKeyDown,\n isSecondary,\n itemWidth,\n items,\n shownItemsCount,\n ]);\n\n const pseudoButtons = useMemo(() => {\n if (items.length > shownItemsCount) {\n const newItems = items.slice(0, shownItemsCount - 1);\n\n const elements = newItems.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n\n const id = 'more';\n\n elements.push(\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, newItems.length)}\n >\n <Icon icons={['fa fa-ellipsis']} />\n </StyledSliderButtonItem>,\n );\n\n return elements;\n }\n return items.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [handleClick, isSecondary, itemWidth, items, shownItemsCount]);\n\n /**\n * Creates an array with the snap points relative to the width of the items\n */\n const snapPoints = useMemo(() => {\n const points = [0];\n\n for (let i = 1; i < items.length; i++) {\n points.push(itemWidth * i);\n }\n\n return points;\n }, [itemWidth, items.length]);\n\n const handleDragStart = useCallback(() => {\n void setRefreshScrollEnabled(false);\n }, []);\n\n const handleDragEnd = useCallback(() => {\n void setRefreshScrollEnabled(true);\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle, left } = position;\n\n let scrollLeft = 0;\n\n if (sliderButtonWrapperRef.current) {\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n\n sliderButtonWrapperRef.current.scrollLeft = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: scrollLeft - left,\n }).nearestPoint;\n }\n\n const { nearestIndex } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft,\n });\n\n const { nearestPoint } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: 0,\n });\n const hasMoreItems = items.length > shownItemsCount;\n\n if (nearestPoint >= 0 && nearestIndex >= 0) {\n void animation(nearestPoint);\n\n let id;\n\n if (hasMoreItems && nearestIndex === shownItemsCount - 1) {\n id = 'more';\n } else {\n id = items[nearestIndex]?.id;\n }\n\n if (popupRef.current) {\n if (id === 'more') {\n popupRef.current.show();\n } else {\n popupRef.current.hide();\n }\n }\n\n if (typeof onChange === 'function' && id) {\n setPopupId(id);\n setCurrentIndex(nearestIndex);\n if (id !== 'more') onChange(id);\n }\n }\n }, [animation, itemWidth, items, onChange, scope, setPopupId, shownItemsCount, snapPoints]);\n\n return useMemo(\n () => (\n <StyledSliderButton $isDisabled={isDisabled} ref={sliderButtonRef}>\n <StyledSliderButtonButtonsWrapper $isInvisible>\n {pseudoButtons}\n </StyledSliderButtonButtonsWrapper>\n <StyledMotionSliderButtonThumb\n $isRounded={isRounded}\n ref={scope}\n drag={isDisabled ? false : 'x'}\n dragElastic={0}\n dragConstraints={\n isSliderBigger\n ? { ...dragRange, right: dragRange.right - itemWidth }\n : { ...dragRange }\n }\n $width={itemWidth}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onClick={() => handleClick(currentId, currentIndex)}\n style={{ backgroundColor: thumbBackgroundColor }}\n data-slider-button-thumb=\"true\"\n tabIndex={\n shouldEnableKeyboardHighlightingEffective && !isDisabled ? 0 : undefined\n }\n role={\n shouldEnableKeyboardHighlightingEffective && !isDisabled\n ? 'button'\n : undefined\n }\n onKeyDown={\n shouldEnableKeyboardHighlightingEffective && !isDisabled\n ? handleThumbKeyDown\n : undefined\n }\n $shouldShowKeyboardHighlighting={shouldShowKeyboardHighlighting}\n />\n <StyledSliderButtonWrapper\n $isRounded={isRounded}\n $isDisabled={isDisabled}\n $width={!isSliderBigger ? dragRange.right + itemWidth : dragRange.right}\n ref={sliderButtonWrapperRef}\n style={{ backgroundColor }}\n >\n <AnimatePresence>\n <StyledSliderButtonButtonsWrapper>\n {buttons}\n </StyledSliderButtonButtonsWrapper>\n </AnimatePresence>\n </StyledSliderButtonWrapper>\n </StyledSliderButton>\n ),\n [\n backgroundColor,\n buttons,\n currentId,\n currentIndex,\n dragRange,\n handleClick,\n handleDragEnd,\n handleDragStart,\n handleThumbKeyDown,\n isDisabled,\n isRounded,\n isSliderBigger,\n itemWidth,\n pseudoButtons,\n scope,\n shouldEnableKeyboardHighlightingEffective,\n shouldShowKeyboardHighlighting,\n thumbBackgroundColor,\n ],\n );\n};\n\nSliderButton.displayName = 'SliderButton';\n\nexport default SliderButton;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSliderButtonPopupKeyboard.js","names":["useCallback","useEffect","useState","useSliderButtonPopupKeyboard","isPopupOpen","popupItems","currentPopupId","shownItemsCount","popupItemRefs","popupRef","focusThumb","onSelectPopupItem","focusedPopupIndex","setFocusedPopupIndex","selectedIndex","findIndex","id","initialIndex","window","requestAnimationFrame","current","focus","handlePopupKeyDown","event","length","key","preventDefault","direction","nextIndex","nextItem","Math","max","hide"],"sources":["../../../../src/components/slider-button/useSliderButtonPopupKeyboard.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport type { KeyboardEventHandler, MutableRefObject } from 'react';\nimport type { PopupRef } from '../../types/popup';\nimport type { SliderButtonItem } from '../../types/slider-button';\n\ntype UseSliderButtonPopupKeyboardProps = {\n isPopupOpen: boolean;\n popupItems: SliderButtonItem[];\n currentPopupId: string;\n shownItemsCount: number;\n popupItemRefs: MutableRefObject<Array<HTMLDivElement | null>>;\n popupRef: MutableRefObject<PopupRef | null>;\n focusThumb: VoidFunction;\n onSelectPopupItem: (id: string, index: number) => void;\n};\n\nexport const useSliderButtonPopupKeyboard = ({\n isPopupOpen,\n popupItems,\n currentPopupId,\n shownItemsCount,\n popupItemRefs,\n popupRef,\n focusThumb,\n onSelectPopupItem,\n}: UseSliderButtonPopupKeyboardProps) => {\n const [focusedPopupIndex, setFocusedPopupIndex] = useState(0);\n\n useEffect(() => {\n if (!isPopupOpen) {\n return;\n }\n\n const selectedIndex = popupItems.findIndex(({ id }) => id === currentPopupId);\n const initialIndex = selectedIndex >= 0 ? selectedIndex : 0;\n\n setFocusedPopupIndex(initialIndex);\n\n window.requestAnimationFrame(() => {\n popupItemRefs.current[initialIndex]?.focus();\n });\n }, [currentPopupId, isPopupOpen, popupItems, popupItemRefs]);\n\n const handlePopupKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n (event) => {\n if (!isPopupOpen || popupItems.length === 0) {\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n\n const direction = event.key === 'ArrowDown' ? 1 : -1;\n const nextIndex =\n (focusedPopupIndex + direction + popupItems.length) % popupItems.length;\n\n setFocusedPopupIndex(nextIndex);\n popupItemRefs.current[nextIndex]?.focus();\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n\n const nextItem = popupItems[focusedPopupIndex];\n\n if (nextItem) {\n onSelectPopupItem(nextItem.id, Math.max(0, shownItemsCount - 1));\n }\n\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n popupRef.current?.hide();\n focusThumb();\n }\n },\n [\n focusThumb,\n focusedPopupIndex,\n isPopupOpen,\n onSelectPopupItem,\n popupItemRefs,\n popupItems,\n popupRef,\n shownItemsCount,\n ],\n );\n\n return { handlePopupKeyDown };\n};\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAgBxD,OAAO,MAAMC,4BAA4B,GAAGA,CAAC;EACzCC,WAAW;EACXC,UAAU;EACVC,cAAc;EACdC,eAAe;EACfC,aAAa;EACbC,QAAQ;EACRC,UAAU;EACVC;AAC+B,CAAC,KAAK;EACrC,MAAM,CAACC,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGX,QAAQ,CAAC,CAAC,CAAC;EAE7DD,SAAS,CAAC,MAAM;IACZ,IAAI,CAACG,WAAW,EAAE;MACd;IACJ;IAEA,MAAMU,aAAa,GAAGT,UAAU,CAACU,SAAS,CAAC,CAAC;MAAEC;IAAG,CAAC,KAAKA,EAAE,KAAKV,cAAc,CAAC;IAC7E,MAAMW,YAAY,GAAGH,aAAa,IAAI,CAAC,GAAGA,aAAa,GAAG,CAAC;IAE3DD,oBAAoB,CAACI,YAAY,CAAC;IAElCC,MAAM,CAACC,qBAAqB,CAAC,MAAM;MAC/BX,aAAa,CAACY,OAAO,CAACH,YAAY,CAAC,EAAEI,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC;EACN,CAAC,EAAE,CAACf,cAAc,EAAEF,WAAW,EAAEC,UAAU,EAAEG,aAAa,CAAC,CAAC;EAE5D,MAAMc,kBAAkB,GAAGtB,WAAW,CACjCuB,KAAK,IAAK;IACP,IAAI,CAACnB,WAAW,IAAIC,UAAU,CAACmB,MAAM,KAAK,CAAC,EAAE;MACzC;IACJ;IAEA,IAAID,KAAK,CAACE,GAAG,KAAK,WAAW,IAAIF,KAAK,CAACE,GAAG,KAAK,SAAS,EAAE;MACtDF,KAAK,CAACG,cAAc,CAAC,CAAC;MAEtB,MAAMC,SAAS,GAAGJ,KAAK,CAACE,GAAG,KAAK,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;MACpD,MAAMG,SAAS,GACX,CAAChB,iBAAiB,GAAGe,SAAS,GAAGtB,UAAU,CAACmB,MAAM,IAAInB,UAAU,CAACmB,MAAM;MAE3EX,oBAAoB,CAACe,SAAS,CAAC;MAC/BpB,aAAa,CAACY,OAAO,CAACQ,SAAS,CAAC,EAAEP,KAAK,CAAC,CAAC;MACzC;IACJ;IAEA,IAAIE,KAAK,CAACE,GAAG,KAAK,OAAO,IAAIF,KAAK,CAACE,GAAG,KAAK,GAAG,EAAE;MAC5CF,KAAK,CAACG,cAAc,CAAC,CAAC;MAEtB,MAAMG,QAAQ,GAAGxB,UAAU,CAACO,iBAAiB,CAAC;MAE9C,IAAIiB,QAAQ,EAAE;QACVlB,iBAAiB,CAACkB,QAAQ,CAACb,EAAE,EAAEc,IAAI,CAACC,GAAG,CAAC,CAAC,EAAExB,eAAe,GAAG,CAAC,CAAC,CAAC;MACpE;MAEA;IACJ;IAEA,IAAIgB,KAAK,CAACE,GAAG,KAAK,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"useSliderButtonPopupKeyboard.js","names":["useCallback","useEffect","useState","useSliderButtonPopupKeyboard","isPopupOpen","popupItems","currentPopupId","shownItemsCount","popupItemRefs","popupRef","focusThumb","onSelectPopupItem","focusedPopupIndex","setFocusedPopupIndex","selectedIndex","findIndex","id","initialIndex","window","requestAnimationFrame","current","focus","handlePopupKeyDown","event","length","key","preventDefault","direction","nextIndex","nextItem","Math","max","hide"],"sources":["../../../../src/components/slider-button/useSliderButtonPopupKeyboard.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport type { KeyboardEventHandler, MutableRefObject } from 'react';\nimport type { PopupRef } from '../../types/popup';\nimport type { SliderButtonItem } from '../../types/slider-button';\n\ntype UseSliderButtonPopupKeyboardProps = {\n isPopupOpen: boolean;\n popupItems: SliderButtonItem[];\n currentPopupId: string;\n shownItemsCount: number;\n popupItemRefs: MutableRefObject<Array<HTMLDivElement | null>>;\n popupRef: MutableRefObject<PopupRef | null>;\n focusThumb: VoidFunction;\n onSelectPopupItem: (id: string, index: number) => void;\n};\n\nexport const useSliderButtonPopupKeyboard = ({\n isPopupOpen,\n popupItems,\n currentPopupId,\n shownItemsCount,\n popupItemRefs,\n popupRef,\n focusThumb,\n onSelectPopupItem,\n}: UseSliderButtonPopupKeyboardProps) => {\n const [focusedPopupIndex, setFocusedPopupIndex] = useState(0);\n\n useEffect(() => {\n if (!isPopupOpen) {\n return;\n }\n\n const selectedIndex = popupItems.findIndex(({ id }) => id === currentPopupId);\n const initialIndex = selectedIndex >= 0 ? selectedIndex : 0;\n\n setFocusedPopupIndex(initialIndex);\n\n window.requestAnimationFrame(() => {\n popupItemRefs.current[initialIndex]?.focus();\n });\n }, [currentPopupId, isPopupOpen, popupItems, popupItemRefs]);\n\n const handlePopupKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n (event) => {\n if (!isPopupOpen || popupItems.length === 0) {\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n\n const direction = event.key === 'ArrowDown' ? 1 : -1;\n const nextIndex =\n (focusedPopupIndex + direction + popupItems.length) % popupItems.length;\n\n setFocusedPopupIndex(nextIndex);\n popupItemRefs.current[nextIndex]?.focus();\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n\n const nextItem = popupItems[focusedPopupIndex];\n\n if (nextItem) {\n onSelectPopupItem(nextItem.id, Math.max(0, shownItemsCount - 1));\n }\n\n return;\n }\n\n if (event.key === 'Escape' || event.key === 'ArrowLeft' || event.key === 'Tab') {\n event.preventDefault();\n popupRef.current?.hide();\n focusThumb();\n }\n },\n [\n focusThumb,\n focusedPopupIndex,\n isPopupOpen,\n onSelectPopupItem,\n popupItemRefs,\n popupItems,\n popupRef,\n shownItemsCount,\n ],\n );\n\n return { handlePopupKeyDown };\n};\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAgBxD,OAAO,MAAMC,4BAA4B,GAAGA,CAAC;EACzCC,WAAW;EACXC,UAAU;EACVC,cAAc;EACdC,eAAe;EACfC,aAAa;EACbC,QAAQ;EACRC,UAAU;EACVC;AAC+B,CAAC,KAAK;EACrC,MAAM,CAACC,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGX,QAAQ,CAAC,CAAC,CAAC;EAE7DD,SAAS,CAAC,MAAM;IACZ,IAAI,CAACG,WAAW,EAAE;MACd;IACJ;IAEA,MAAMU,aAAa,GAAGT,UAAU,CAACU,SAAS,CAAC,CAAC;MAAEC;IAAG,CAAC,KAAKA,EAAE,KAAKV,cAAc,CAAC;IAC7E,MAAMW,YAAY,GAAGH,aAAa,IAAI,CAAC,GAAGA,aAAa,GAAG,CAAC;IAE3DD,oBAAoB,CAACI,YAAY,CAAC;IAElCC,MAAM,CAACC,qBAAqB,CAAC,MAAM;MAC/BX,aAAa,CAACY,OAAO,CAACH,YAAY,CAAC,EAAEI,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC;EACN,CAAC,EAAE,CAACf,cAAc,EAAEF,WAAW,EAAEC,UAAU,EAAEG,aAAa,CAAC,CAAC;EAE5D,MAAMc,kBAAkB,GAAGtB,WAAW,CACjCuB,KAAK,IAAK;IACP,IAAI,CAACnB,WAAW,IAAIC,UAAU,CAACmB,MAAM,KAAK,CAAC,EAAE;MACzC;IACJ;IAEA,IAAID,KAAK,CAACE,GAAG,KAAK,WAAW,IAAIF,KAAK,CAACE,GAAG,KAAK,SAAS,EAAE;MACtDF,KAAK,CAACG,cAAc,CAAC,CAAC;MAEtB,MAAMC,SAAS,GAAGJ,KAAK,CAACE,GAAG,KAAK,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;MACpD,MAAMG,SAAS,GACX,CAAChB,iBAAiB,GAAGe,SAAS,GAAGtB,UAAU,CAACmB,MAAM,IAAInB,UAAU,CAACmB,MAAM;MAE3EX,oBAAoB,CAACe,SAAS,CAAC;MAC/BpB,aAAa,CAACY,OAAO,CAACQ,SAAS,CAAC,EAAEP,KAAK,CAAC,CAAC;MACzC;IACJ;IAEA,IAAIE,KAAK,CAACE,GAAG,KAAK,OAAO,IAAIF,KAAK,CAACE,GAAG,KAAK,GAAG,EAAE;MAC5CF,KAAK,CAACG,cAAc,CAAC,CAAC;MAEtB,MAAMG,QAAQ,GAAGxB,UAAU,CAACO,iBAAiB,CAAC;MAE9C,IAAIiB,QAAQ,EAAE;QACVlB,iBAAiB,CAACkB,QAAQ,CAACb,EAAE,EAAEc,IAAI,CAACC,GAAG,CAAC,CAAC,EAAExB,eAAe,GAAG,CAAC,CAAC,CAAC;MACpE;MAEA;IACJ;IAEA,IAAIgB,KAAK,CAACE,GAAG,KAAK,QAAQ,IAAIF,KAAK,CAACE,GAAG,KAAK,WAAW,IAAIF,KAAK,CAACE,GAAG,KAAK,KAAK,EAAE;MAC5EF,KAAK,CAACG,cAAc,CAAC,CAAC;MACtBjB,QAAQ,CAACW,OAAO,EAAEY,IAAI,CAAC,CAAC;MACxBtB,UAAU,CAAC,CAAC;IAChB;EACJ,CAAC,EACD,CACIA,UAAU,EACVE,iBAAiB,EACjBR,WAAW,EACXO,iBAAiB,EACjBH,aAAa,EACbH,UAAU,EACVI,QAAQ,EACRF,eAAe,CAEvB,CAAC;EAED,OAAO;IAAEe;EAAmB,CAAC;AACjC,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chayns-components/core",
|
|
3
|
-
"version": "5.4.
|
|
3
|
+
"version": "5.4.6-alpha.0",
|
|
4
4
|
"description": "A set of beautiful React components for developing your own applications with chayns.",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"browserslist": [
|
|
@@ -88,5 +88,5 @@
|
|
|
88
88
|
"publishConfig": {
|
|
89
89
|
"access": "public"
|
|
90
90
|
},
|
|
91
|
-
"gitHead": "
|
|
91
|
+
"gitHead": "a7ce22416a94ce7ced95afa87d4e2d75ae8fac58"
|
|
92
92
|
}
|