1 |
- {"version":3,"file":"static/chunks/71801-96b5bfabad66e7fe.js","mappings":"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","sources":["webpack://_N_E/./src/components/DataFetcher/index.tsx","webpack://_N_E/./public/icons/retry.svg","webpack://_N_E/./src/components/Error/index.tsx","webpack://_N_E/./src/components/Navbar/SettingsDrawer/ReciterSelectionBody.tsx","webpack://_N_E/./src/components/dls/Forms/Input/index.tsx","webpack://_N_E/./src/components/dls/Forms/RadioGroup/Item.tsx","webpack://_N_E/./src/components/dls/Forms/RadioGroup/RadioGroup.tsx","webpack://_N_E/./src/components/dls/Forms/RadioGroup/Root.tsx","webpack://_N_E/./src/components/Error/Error.module.scss","webpack://_N_E/./src/components/Navbar/SettingsDrawer/ReciterSelectionBody.module.scss","webpack://_N_E/./src/components/dls/Forms/Input/Input.module.scss","webpack://_N_E/./src/components/dls/Forms/RadioGroup/Item.module.scss","webpack://_N_E/./src/components/dls/Forms/RadioGroup/RadioGroup.module.scss","webpack://_N_E/./src/components/dls/Forms/RadioGroup/Root.module.scss","webpack://_N_E/./node_modules/@radix-ui/react-radio-group/dist/index.mjs","webpack://_N_E/./node_modules/@radix-ui/react-use-previous/dist/index.mjs"],"sourcesContent":["import React, { memo } from 'react';\n\nimport useSWRImmutable from 'swr/immutable';\n\nimport Error from '@/components/Error';\nimport Spinner from '@/dls/Spinner/Spinner';\nimport { fetcher } from 'src/api';\nimport { BaseResponse } from 'types/ApiResponses';\n\ninterface Props {\n queryKey: string;\n render: (data: BaseResponse) => JSX.Element;\n renderError?: (error: any) => JSX.Element | undefined;\n initialData?: BaseResponse;\n loading?: () => JSX.Element;\n fetcher?: (queryKey: string) => Promise<BaseResponse>;\n showSpinnerOnRevalidate?: boolean;\n onFetchSuccess?: (data: BaseResponse) => void;\n}\n\n/**\n * Data fetcher is a dynamic component that serves as a container for a component\n * that depends on data from a remote API to render. This component handles:\n * 1. Calling the API.\n * 2. Caching the response (due to using useSwr).\n * 3. Handling errors if any by showing an error message.\n * 4. Handling when the user is offline while trying to fetch the API response.\n * 5. Dynamically passing the response data through render-props to the parent.\n *\n * @param {Props} props\n * @returns {JSX.Element}\n */\nconst DataFetcher: React.FC<Props> = ({\n queryKey,\n render,\n renderError,\n initialData,\n loading = () => <Spinner />,\n fetcher: dataFetcher = fetcher,\n showSpinnerOnRevalidate = true,\n onFetchSuccess,\n}: Props): JSX.Element => {\n const { data, error, isValidating, mutate } = useSWRImmutable(\n queryKey,\n () =>\n dataFetcher(queryKey)\n .then((res) => {\n onFetchSuccess?.(res);\n return Promise.resolve(res);\n })\n .catch((err) => Promise.reject(err)),\n {\n fallbackData: initialData,\n },\n );\n\n // if showSpinnerOnRevalidate is true, we should show the spinner if we are revalidating the data.\n // otherwise, we should only show the spinner on initial loads.\n if (showSpinnerOnRevalidate ? isValidating : isValidating && !data) {\n return loading();\n }\n\n const onRetryClicked = () => {\n mutate();\n };\n\n /**\n * if we haven't fetched the data yet and the device is not online (because we don't want to show an offline message if the data already exists).\n * or if we had an error when calling the API.\n */\n if (error) {\n // if there is a custom error renderer, use it.\n if (renderError) {\n const errorComponent = renderError(error);\n // if the custom error renderer returns false, it means that it doesn't want to render anything special.\n if (typeof errorComponent !== 'undefined') {\n return errorComponent;\n }\n }\n return <Error onRetryClicked={onRetryClicked} error={error} />;\n }\n\n return render(data);\n};\n\nexport default memo(DataFetcher);\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgRetry = function SvgRetry(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 15,\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.85 7.5c0-2.835 2.21-5.65 5.65-5.65 2.778 0 4.152 2.056 4.737 3.15H10.5a.5.5 0 0 0 0 1h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-1 0v1.813C12.296 3.071 10.666.85 7.5.85 3.437.85.85 4.185.85 7.5c0 3.315 2.587 6.65 6.65 6.65 1.944 0 3.562-.77 4.714-1.942a6.77 6.77 0 0 0 1.428-2.167.5.5 0 1 0-.925-.38 5.77 5.77 0 0 1-1.216 1.846c-.971.99-2.336 1.643-4.001 1.643-3.44 0-5.65-2.815-5.65-5.65Z\",\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n })));\n};\nexport default SvgRetry;","import React from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './Error.module.scss';\n\nimport Button, { ButtonSize, ButtonType } from '@/dls/Button/Button';\nimport RetryIcon from '@/icons/retry.svg';\nimport { OFFLINE_ERROR } from 'src/api';\n\ninterface Props {\n onRetryClicked: () => void;\n error: Error;\n}\n\nconst Error: React.FC<Props> = ({ onRetryClicked, error }) => {\n const { t } = useTranslation('common');\n return (\n <div className={styles.container}>\n <p className={styles.text}>\n {error.message !== OFFLINE_ERROR ? t('error.general') : t('error.offline')}\n </p>\n <Button\n prefix={<RetryIcon />}\n size={ButtonSize.Small}\n type={ButtonType.Secondary}\n onClick={onRetryClicked}\n >\n {t('retry')}\n </Button>\n </div>\n );\n};\n\nexport default Error;\n","import { useContext, useState } from 'react';\n\nimport { useSelector } from '@xstate/react';\nimport Fuse from 'fuse.js';\nimport { useRouter } from 'next/router';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './ReciterSelectionBody.module.scss';\n\nimport DataFetcher from '@/components/DataFetcher';\nimport Input from '@/dls/Forms/Input';\nimport RadioGroup, { RadioGroupOrientation } from '@/dls/Forms/RadioGroup/RadioGroup';\nimport SpinnerContainer from '@/dls/Spinner/SpinnerContainer';\nimport usePersistPreferenceGroup from '@/hooks/auth/usePersistPreferenceGroup';\nimport IconSearch from '@/icons/search.svg';\nimport SearchQuerySource from '@/types/SearchQuerySource';\nimport { makeAvailableRecitersUrl } from '@/utils/apiPaths';\nimport { logEmptySearchResults, logItemSelectionChange } from '@/utils/eventLogger';\nimport { AudioPlayerMachineContext } from 'src/xstate/AudioPlayerMachineContext';\nimport { RecitersResponse } from 'types/ApiResponses';\nimport PreferenceGroup from 'types/auth/PreferenceGroup';\nimport QueryParam from 'types/QueryParam';\nimport Reciter from 'types/Reciter';\n\nexport const filterReciters = (reciters, searchQuery: string): Reciter[] => {\n const fuse = new Fuse(reciters, {\n keys: ['name', 'languageName', 'translatedName.name', 'qirat.name', 'style.name'],\n threshold: 0.3,\n });\n\n const filteredReciter = fuse.search(searchQuery).map(({ item }) => item);\n if (!filteredReciter.length) {\n logEmptySearchResults({\n query: searchQuery,\n source: SearchQuerySource.TranslationSettingsDrawer,\n });\n }\n return filteredReciter as Reciter[];\n};\n\nconst DEFAULT_RECITATION_STYLE = 'Murattal';\n\nconst SettingsReciter = () => {\n const { lang, t } = useTranslation('common');\n const {\n isLoading,\n actions: { onXstateSettingsChange },\n } = usePersistPreferenceGroup();\n const router = useRouter();\n const [searchQuery, setSearchQuery] = useState('');\n\n const audioService = useContext(AudioPlayerMachineContext);\n const selectedReciterId = useSelector(audioService, (state) => state.context.reciterId);\n\n // given the reciterId, get the full reciter object.\n const onSelectedReciterChange = (reciterId: string, reciters: Reciter[]) => {\n if (!reciterId) return;\n const reciter = reciters.find((r) => r.id === Number(reciterId));\n logItemSelectionChange('selected_reciter', reciter.id);\n router.query[QueryParam.Reciter] = String(reciter.id);\n router.push(router, undefined, { shallow: true });\n\n const previousReciterId = selectedReciterId;\n onXstateSettingsChange(\n 'reciter',\n reciter.id,\n () => audioService.send({ type: 'CHANGE_RECITER', reciterId: Number(reciterId) }),\n () => audioService.send({ type: 'CHANGE_RECITER', reciterId: previousReciterId }),\n PreferenceGroup.AUDIO,\n );\n };\n\n return (\n <div>\n <div className={styles.searchInputContainer}>\n <SpinnerContainer isLoading={isLoading}>\n <Input\n prefix={<IconSearch />}\n id=\"translations-search\"\n value={searchQuery}\n onChange={setSearchQuery}\n placeholder={t('settings.search-reciter')}\n fixedWidth={false}\n containerClassName={styles.input}\n />\n </SpinnerContainer>\n </div>\n <DataFetcher\n queryKey={makeAvailableRecitersUrl(lang)}\n render={(data: RecitersResponse) => {\n const filteredReciters = searchQuery\n ? filterReciters(data.reciters, searchQuery)\n : data.reciters;\n\n return (\n <RadioGroup.Root\n label=\"reciter\"\n orientation={RadioGroupOrientation.Vertical}\n value={selectedReciterId.toString()}\n onChange={(newId) => onSelectedReciterChange(newId, data.reciters)}\n >\n {filteredReciters\n .sort((a, b) => (a.name + a.id > b.name + b.id ? 1 : -1))\n .map((reciter) => {\n const reciterId = reciter.id.toString();\n return (\n <div className={styles.reciter} key={reciterId}>\n <RadioGroup.Item value={reciterId} id={reciterId} />\n\n <label htmlFor={reciterId} className={styles.reciterLabel}>\n {reciter.translatedName.name}\n {reciter.style.name !== DEFAULT_RECITATION_STYLE && (\n <span className={styles.recitationStyle}>{reciter.style.name}</span>\n )}\n </label>\n </div>\n );\n })}\n </RadioGroup.Root>\n );\n }}\n />\n </div>\n );\n};\n\nexport default SettingsReciter;\n","/* eslint-disable max-lines */\nimport React, {\n ReactNode,\n useState,\n useEffect,\n ChangeEvent,\n RefObject,\n KeyboardEvent,\n HTMLAttributes,\n} from 'react';\n\nimport classNames from 'classnames';\n\nimport Button, { ButtonShape, ButtonSize, ButtonVariant } from '../../Button/Button';\n\nimport styles from './Input.module.scss';\n\nimport ClearIcon from '@/icons/close.svg';\n\nexport enum InputSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\n\nexport enum InputType {\n Error = 'error',\n Warning = 'warning',\n Success = 'success',\n}\n\nexport enum InputVariant {\n Default = 'default',\n Main = 'main',\n}\ninterface Props {\n id: string;\n name?: string;\n size?: InputSize;\n placeholder?: string;\n fixedWidth?: boolean;\n disabled?: boolean;\n clearable?: boolean;\n prefix?: ReactNode;\n suffix?: ReactNode;\n onClearClicked?: () => void;\n onChange?: (value: string) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;\n inputMode?: HTMLAttributes<HTMLInputElement>['inputMode'];\n value?: string;\n label?: string | JSX.Element;\n type?: InputType;\n shouldFlipOnRTL?: boolean;\n variant?: InputVariant;\n containerClassName?: string;\n htmlType?: React.HTMLInputTypeAttribute;\n isRequired?: boolean;\n inputRef?: RefObject<HTMLInputElement>;\n}\n\nconst Input: React.FC<Props> = ({\n id,\n name,\n label,\n placeholder,\n size = InputSize.Medium,\n fixedWidth = true,\n disabled = false,\n clearable = false,\n type,\n variant,\n prefix,\n suffix,\n onClearClicked,\n onChange,\n onKeyDown,\n inputMode,\n value = '',\n shouldFlipOnRTL = true,\n containerClassName,\n htmlType,\n isRequired,\n inputRef,\n}) => {\n const [inputValue, setInputValue] = useState(value);\n // listen to any change in value in-case the value gets populated after and API call.\n useEffect(() => {\n setInputValue(value);\n }, [value]);\n\n const onValueChange = (event: ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value;\n setInputValue(newValue);\n if (onChange) {\n onChange(newValue);\n }\n };\n\n return (\n <>\n {label && <p className={styles.label}>{label}</p>}\n <div\n className={classNames(styles.container, containerClassName, {\n [styles.smallContainer]: size === InputSize.Small,\n [styles.mediumContainer]: size === InputSize.Medium,\n [styles.largeContainer]: size === InputSize.Large,\n [styles.fixedWidth]: fixedWidth,\n [styles.disabled]: disabled,\n [styles.error]: type === InputType.Error,\n [styles.success]: type === InputType.Success,\n [styles.warning]: type === InputType.Warning,\n [styles.main]: variant === InputVariant.Main,\n })}\n >\n {prefix && (\n <div className={classNames(styles.prefix, styles.prefixSuffixContainer)}>{prefix}</div>\n )}\n <input\n className={classNames(styles.input, {\n [styles.error]: type === InputType.Error,\n [styles.success]: type === InputType.Success,\n [styles.warning]: type === InputType.Warning,\n [styles.rtlInput]: shouldFlipOnRTL,\n })}\n type={htmlType}\n required={isRequired}\n dir=\"auto\"\n id={id}\n ref={inputRef}\n disabled={disabled}\n onChange={onValueChange}\n value={inputValue}\n onKeyDown={onKeyDown}\n inputMode={inputMode}\n {...(placeholder && { placeholder })}\n {...(name && { name })}\n />\n {clearable ? (\n <>\n {inputValue && (\n <div className={styles.clearContainer}>\n <Button\n shape={ButtonShape.Circle}\n variant={ButtonVariant.Ghost}\n size={ButtonSize.Small}\n onClick={onClearClicked}\n >\n <ClearIcon />\n </Button>\n </div>\n )}\n </>\n ) : (\n <>\n {suffix && (\n <div className={classNames(styles.suffix, styles.prefixSuffixContainer)}>\n {suffix}\n </div>\n )}\n </>\n )}\n </div>\n </>\n );\n};\n\nexport default Input;\n","import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport classNames from 'classnames';\n\nimport styles from './Item.module.scss';\n\ninterface Props extends RadioGroupPrimitive.RadioGroupItemProps {\n indicatorClassName?: string;\n}\n\nconst Item = ({ className, indicatorClassName, ...props }: Props) => (\n <RadioGroupPrimitive.Item className={classNames(styles.radioItem, className)} {...props}>\n <RadioGroupPrimitive.Indicator className={classNames(styles.indicator, indicatorClassName)} />\n </RadioGroupPrimitive.Item>\n);\n\nexport default Item;\n","import React from 'react';\n\nimport classNames from 'classnames';\n\nimport Item from './Item';\nimport styles from './RadioGroup.module.scss';\nimport Root, { Props as RootProps } from './Root';\n\nexport interface RadioItem {\n value: string;\n id: string;\n label: string;\n disabled?: boolean;\n required?: boolean;\n}\n\ninterface Props extends RootProps {\n items: RadioItem[];\n disabled?: boolean;\n}\n\nconst RadioGroup = ({ items, disabled = false, ...props }: Props) => {\n return (\n <Root {...props}>\n {items.map((item) => {\n const isDisabled = disabled === true || item.disabled === true;\n return (\n <div className={styles.radioItemContainer} key={item.id}>\n <Item\n value={item.value}\n id={item.id}\n disabled={isDisabled}\n required={item.required || false}\n />\n\n <label\n htmlFor={item.id}\n className={classNames(styles.label, { [styles.disabled]: isDisabled })}\n >\n {item.label}\n </label>\n </div>\n );\n })}\n </Root>\n );\n};\n\nRadioGroup.Root = Root;\nRadioGroup.Item = Item;\n\n// export `RadioGroupOrientation` type from here so that files that are using it don't break\nexport { RadioRootOrientation as RadioGroupOrientation } from './Root';\n\nexport default RadioGroup;\n","import React from 'react';\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport classNames from 'classnames';\n\nimport styles from './Root.module.scss';\n\nimport useDirection from '@/hooks/useDirection';\nimport { Direction } from '@/utils/locale';\n\nexport enum RadioRootOrientation {\n Horizontal = 'horizontal',\n Vertical = 'vertical',\n}\n\nexport interface Props {\n orientation?: RadioRootOrientation;\n label: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n value?: string;\n name?: string;\n required?: boolean;\n className?: string;\n children?: React.ReactNode;\n}\n\nconst Root: React.FC<Props> = ({\n className,\n label,\n orientation = RadioRootOrientation.Vertical,\n onChange,\n defaultValue,\n value,\n name,\n required,\n children,\n}) => {\n const direction = useDirection();\n\n return (\n <RadioGroupPrimitive.Root\n className={classNames(styles.container, className)}\n dir={direction as Direction}\n aria-label={label}\n orientation={orientation}\n {...(onChange && { onValueChange: onChange })}\n {...(defaultValue && { defaultValue })}\n {...(value && { value })}\n {...(name && { name })}\n {...(required && { required })}\n >\n {children}\n </RadioGroupPrimitive.Root>\n );\n};\n\nexport default Root;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Error_container__1m9XV\",\"text\":\"Error_text__yg4kD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"reciter\":\"ReciterSelectionBody_reciter__UiTm4\",\"reciterLabel\":\"ReciterSelectionBody_reciterLabel__IjlJw\",\"recitationStyle\":\"ReciterSelectionBody_recitationStyle__vWjKD\",\"searchInputContainer\":\"ReciterSelectionBody_searchInputContainer__YIeoq\",\"input\":\"ReciterSelectionBody_input___SxR_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Input_container__5BNOH\",\"fixedWidth\":\"Input_fixedWidth__MZoNx\",\"disabled\":\"Input_disabled__AFA4l\",\"error\":\"Input_error__cfc8q\",\"success\":\"Input_success__qb_Ue\",\"warning\":\"Input_warning__KwRSJ\",\"main\":\"Input_main__K4bVL\",\"input\":\"Input_input__za7E9\",\"rtlInput\":\"Input_rtlInput__8Yg1Q\",\"smallContainer\":\"Input_smallContainer__bxyYT\",\"mediumContainer\":\"Input_mediumContainer__jEOpT\",\"largeContainer\":\"Input_largeContainer__yafZ8\",\"label\":\"Input_label__loZWW\",\"clearContainer\":\"Input_clearContainer__3LxT4\",\"prefixSuffixContainer\":\"Input_prefixSuffixContainer__n84F6\",\"prefix\":\"Input_prefix__jYhnp\",\"suffix\":\"Input_suffix__v_BvR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"indicator\":\"Item_indicator__x6BoJ\",\"radioItem\":\"Item_radioItem__DEP6h\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"radioItemContainer\":\"RadioGroup_radioItemContainer__Zpb6v\",\"label\":\"RadioGroup_label__h0v1C\",\"disabled\":\"RadioGroup_disabled__aU243\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Root_container__FbYRt\"};","import $8Wolv$babelruntimehelpersesmextends from \"@babel/runtime/helpers/esm/extends\";\nimport {forwardRef as $8Wolv$forwardRef, createElement as $8Wolv$createElement, useRef as $8Wolv$useRef, useEffect as $8Wolv$useEffect, useState as $8Wolv$useState} from \"react\";\nimport {composeEventHandlers as $8Wolv$composeEventHandlers} from \"@radix-ui/primitive\";\nimport {useComposedRefs as $8Wolv$useComposedRefs} from \"@radix-ui/react-compose-refs\";\nimport {createContextScope as $8Wolv$createContextScope} from \"@radix-ui/react-context\";\nimport {Primitive as $8Wolv$Primitive} from \"@radix-ui/react-primitive\";\nimport {createRovingFocusGroupScope as $8Wolv$createRovingFocusGroupScope, Root as $8Wolv$Root, Item as $8Wolv$Item} from \"@radix-ui/react-roving-focus\";\nimport {useControllableState as $8Wolv$useControllableState} from \"@radix-ui/react-use-controllable-state\";\nimport {useDirection as $8Wolv$useDirection} from \"@radix-ui/react-direction\";\nimport {useSize as $8Wolv$useSize} from \"@radix-ui/react-use-size\";\nimport {usePrevious as $8Wolv$usePrevious} from \"@radix-ui/react-use-previous\";\nimport {Presence as $8Wolv$Presence} from \"@radix-ui/react-presence\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* -------------------------------------------------------------------------------------------------\n * Radio\n * -----------------------------------------------------------------------------------------------*/ const $ce77a8961b41be9e$var$RADIO_NAME = 'Radio';\nconst [$ce77a8961b41be9e$var$createRadioContext, $ce77a8961b41be9e$export$67d2296460f1b002] = $8Wolv$createContextScope($ce77a8961b41be9e$var$RADIO_NAME);\nconst [$ce77a8961b41be9e$var$RadioProvider, $ce77a8961b41be9e$var$useRadioContext] = $ce77a8961b41be9e$var$createRadioContext($ce77a8961b41be9e$var$RADIO_NAME);\nconst $ce77a8961b41be9e$export$d7b12c4107be0d61 = /*#__PURE__*/ $8Wolv$forwardRef((props, forwardedRef)=>{\n const { __scopeRadio: __scopeRadio , name: name , checked: checked = false , required: required , disabled: disabled , value: value = 'on' , onCheck: onCheck , ...radioProps } = props;\n const [button, setButton] = $8Wolv$useState(null);\n const composedRefs = $8Wolv$useComposedRefs(forwardedRef, (node)=>setButton(node)\n );\n const hasConsumerStoppedPropagationRef = $8Wolv$useRef(false); // We set this to true by default so that events bubble to forms without JS (SSR)\n const isFormControl = button ? Boolean(button.closest('form')) : true;\n return /*#__PURE__*/ $8Wolv$createElement($ce77a8961b41be9e$var$RadioProvider, {\n scope: __scopeRadio,\n checked: checked,\n disabled: disabled\n }, /*#__PURE__*/ $8Wolv$createElement($8Wolv$Primitive.button, $8Wolv$babelruntimehelpersesmextends({\n type: \"button\",\n role: \"radio\",\n \"aria-checked\": checked,\n \"data-state\": $ce77a8961b41be9e$var$getState(checked),\n \"data-disabled\": disabled ? '' : undefined,\n disabled: disabled,\n value: value\n }, radioProps, {\n ref: composedRefs,\n onClick: $8Wolv$composeEventHandlers(props.onClick, (event)=>{\n // radios cannot be unchecked so we only communicate a checked state\n if (!checked) onCheck === null || onCheck === void 0 || onCheck();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(); // if radio is in a form, stop propagation from the button so that we only propagate\n // one click event (from the input). We propagate changes from an input so that native\n // form validation works and form events reflect radio updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n })), isFormControl && /*#__PURE__*/ $8Wolv$createElement($ce77a8961b41be9e$var$BubbleInput, {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name: name,\n value: value,\n checked: checked,\n required: required,\n disabled: disabled // We transform because the input is absolutely positioned but we have\n ,\n style: {\n transform: 'translateX(-100%)'\n }\n }));\n});\n/*#__PURE__*/ Object.assign($ce77a8961b41be9e$export$d7b12c4107be0d61, {\n displayName: $ce77a8961b41be9e$var$RADIO_NAME\n});\n/* -------------------------------------------------------------------------------------------------\n * RadioIndicator\n * -----------------------------------------------------------------------------------------------*/ const $ce77a8961b41be9e$var$INDICATOR_NAME = 'RadioIndicator';\nconst $ce77a8961b41be9e$export$d35a9ffa9a04f9e7 = /*#__PURE__*/ $8Wolv$forwardRef((props, forwardedRef)=>{\n const { __scopeRadio: __scopeRadio , forceMount: forceMount , ...indicatorProps } = props;\n const context = $ce77a8961b41be9e$var$useRadioContext($ce77a8961b41be9e$var$INDICATOR_NAME, __scopeRadio);\n return /*#__PURE__*/ $8Wolv$createElement($8Wolv$Presence, {\n present: forceMount || context.checked\n }, /*#__PURE__*/ $8Wolv$createElement($8Wolv$Primitive.span, $8Wolv$babelruntimehelpersesmextends({\n \"data-state\": $ce77a8961b41be9e$var$getState(context.checked),\n \"data-disabled\": context.disabled ? '' : undefined\n }, indicatorProps, {\n ref: forwardedRef\n })));\n});\n/*#__PURE__*/ Object.assign($ce77a8961b41be9e$export$d35a9ffa9a04f9e7, {\n displayName: $ce77a8961b41be9e$var$INDICATOR_NAME\n});\n/* ---------------------------------------------------------------------------------------------- */ const $ce77a8961b41be9e$var$BubbleInput = (props)=>{\n const { control: control , checked: checked , bubbles: bubbles = true , ...inputProps } = props;\n const ref = $8Wolv$useRef(null);\n const prevChecked = $8Wolv$usePrevious(checked);\n const controlSize = $8Wolv$useSize(control); // Bubble checked change to parents (e.g form change event)\n $8Wolv$useEffect(()=>{\n const input = ref.current;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, 'checked');\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event('click', {\n bubbles: bubbles\n });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [\n prevChecked,\n checked,\n bubbles\n ]);\n return /*#__PURE__*/ $8Wolv$createElement(\"input\", $8Wolv$babelruntimehelpersesmextends({\n type: \"radio\",\n \"aria-hidden\": true,\n defaultChecked: checked\n }, inputProps, {\n tabIndex: -1,\n ref: ref,\n style: {\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0\n }\n }));\n};\nfunction $ce77a8961b41be9e$var$getState(checked) {\n return checked ? 'checked' : 'unchecked';\n}\n\n\nconst $f99a8c78507165f7$var$ARROW_KEYS = [\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight'\n];\n/* -------------------------------------------------------------------------------------------------\n * RadioGroup\n * -----------------------------------------------------------------------------------------------*/ const $f99a8c78507165f7$var$RADIO_GROUP_NAME = 'RadioGroup';\nconst [$f99a8c78507165f7$var$createRadioGroupContext, $f99a8c78507165f7$export$c547093f11b76da2] = $8Wolv$createContextScope($f99a8c78507165f7$var$RADIO_GROUP_NAME, [\n $8Wolv$createRovingFocusGroupScope,\n $ce77a8961b41be9e$export$67d2296460f1b002\n]);\nconst $f99a8c78507165f7$var$useRovingFocusGroupScope = $8Wolv$createRovingFocusGroupScope();\nconst $f99a8c78507165f7$var$useRadioScope = $ce77a8961b41be9e$export$67d2296460f1b002();\nconst [$f99a8c78507165f7$var$RadioGroupProvider, $f99a8c78507165f7$var$useRadioGroupContext] = $f99a8c78507165f7$var$createRadioGroupContext($f99a8c78507165f7$var$RADIO_GROUP_NAME);\nconst $f99a8c78507165f7$export$a98f0dcb43a68a25 = /*#__PURE__*/ $8Wolv$forwardRef((props, forwardedRef)=>{\n const { __scopeRadioGroup: __scopeRadioGroup , name: name , defaultValue: defaultValue , value: valueProp , required: required = false , disabled: disabled = false , orientation: orientation , dir: dir , loop: loop = true , onValueChange: onValueChange , ...groupProps } = props;\n const rovingFocusGroupScope = $f99a8c78507165f7$var$useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = $8Wolv$useDirection(dir);\n const [value, setValue] = $8Wolv$useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange\n });\n return /*#__PURE__*/ $8Wolv$createElement($f99a8c78507165f7$var$RadioGroupProvider, {\n scope: __scopeRadioGroup,\n name: name,\n required: required,\n disabled: disabled,\n value: value,\n onValueChange: setValue\n }, /*#__PURE__*/ $8Wolv$createElement($8Wolv$Root, $8Wolv$babelruntimehelpersesmextends({\n asChild: true\n }, rovingFocusGroupScope, {\n orientation: orientation,\n dir: direction,\n loop: loop\n }), /*#__PURE__*/ $8Wolv$createElement($8Wolv$Primitive.div, $8Wolv$babelruntimehelpersesmextends({\n role: \"radiogroup\",\n \"aria-required\": required,\n \"aria-orientation\": orientation,\n \"data-disabled\": disabled ? '' : undefined,\n dir: direction\n }, groupProps, {\n ref: forwardedRef\n }))));\n});\n/*#__PURE__*/ Object.assign($f99a8c78507165f7$export$a98f0dcb43a68a25, {\n displayName: $f99a8c78507165f7$var$RADIO_GROUP_NAME\n});\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupItem\n * -----------------------------------------------------------------------------------------------*/ const $f99a8c78507165f7$var$ITEM_NAME = 'RadioGroupItem';\nconst $f99a8c78507165f7$export$9f866c100ef519e4 = /*#__PURE__*/ $8Wolv$forwardRef((props, forwardedRef)=>{\n const { __scopeRadioGroup: __scopeRadioGroup , disabled: disabled , ...itemProps } = props;\n const context = $f99a8c78507165f7$var$useRadioGroupContext($f99a8c78507165f7$var$ITEM_NAME, __scopeRadioGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = $f99a8c78507165f7$var$useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = $f99a8c78507165f7$var$useRadioScope(__scopeRadioGroup);\n const ref = $8Wolv$useRef(null);\n const composedRefs = $8Wolv$useComposedRefs(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = $8Wolv$useRef(false);\n $8Wolv$useEffect(()=>{\n const handleKeyDown = (event)=>{\n if ($f99a8c78507165f7$var$ARROW_KEYS.includes(event.key)) isArrowKeyPressedRef.current = true;\n };\n const handleKeyUp = ()=>isArrowKeyPressedRef.current = false\n ;\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keyup', handleKeyUp);\n return ()=>{\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n return /*#__PURE__*/ $8Wolv$createElement($8Wolv$Item, $8Wolv$babelruntimehelpersesmextends({\n asChild: true\n }, rovingFocusGroupScope, {\n focusable: !isDisabled,\n active: checked\n }), /*#__PURE__*/ $8Wolv$createElement($ce77a8961b41be9e$export$d7b12c4107be0d61, $8Wolv$babelruntimehelpersesmextends({\n disabled: isDisabled,\n required: context.required,\n checked: checked\n }, radioScope, itemProps, {\n name: context.name,\n ref: composedRefs,\n onCheck: ()=>context.onValueChange(itemProps.value)\n ,\n onKeyDown: $8Wolv$composeEventHandlers((event)=>{\n // According to WAI ARIA, radio groups don't activate items on enter keypress\n if (event.key === 'Enter') event.preventDefault();\n }),\n onFocus: $8Wolv$composeEventHandlers(itemProps.onFocus, ()=>{\n var _ref$current;\n /**\n * Our `RovingFocusGroup` will focus the radio when navigating with arrow keys\n * and we need to \"check\" it in that case. We click it to \"check\" it (instead\n * of updating `context.value`) so that the radio change event fires.\n */ if (isArrowKeyPressedRef.current) (_ref$current = ref.current) === null || _ref$current === void 0 || _ref$current.click();\n })\n })));\n});\n/*#__PURE__*/ Object.assign($f99a8c78507165f7$export$9f866c100ef519e4, {\n displayName: $f99a8c78507165f7$var$ITEM_NAME\n});\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupIndicator\n * -----------------------------------------------------------------------------------------------*/ const $f99a8c78507165f7$var$INDICATOR_NAME = 'RadioGroupIndicator';\nconst $f99a8c78507165f7$export$5fb54c671a65c88 = /*#__PURE__*/ $8Wolv$forwardRef((props, forwardedRef)=>{\n const { __scopeRadioGroup: __scopeRadioGroup , ...indicatorProps } = props;\n const radioScope = $f99a8c78507165f7$var$useRadioScope(__scopeRadioGroup);\n return /*#__PURE__*/ $8Wolv$createElement($ce77a8961b41be9e$export$d35a9ffa9a04f9e7, $8Wolv$babelruntimehelpersesmextends({}, radioScope, indicatorProps, {\n ref: forwardedRef\n }));\n});\n/*#__PURE__*/ Object.assign($f99a8c78507165f7$export$5fb54c671a65c88, {\n displayName: $f99a8c78507165f7$var$INDICATOR_NAME\n});\n/* ---------------------------------------------------------------------------------------------- */ const $f99a8c78507165f7$export$be92b6f5f03c0fe9 = $f99a8c78507165f7$export$a98f0dcb43a68a25;\nconst $f99a8c78507165f7$export$6d08773d2e66f8f2 = $f99a8c78507165f7$export$9f866c100ef519e4;\nconst $f99a8c78507165f7$export$adb584737d712b70 = $f99a8c78507165f7$export$5fb54c671a65c88;\n\n\n\n\nexport {$f99a8c78507165f7$export$c547093f11b76da2 as createRadioGroupScope, $f99a8c78507165f7$export$a98f0dcb43a68a25 as RadioGroup, $f99a8c78507165f7$export$9f866c100ef519e4 as RadioGroupItem, $f99a8c78507165f7$export$5fb54c671a65c88 as RadioGroupIndicator, $f99a8c78507165f7$export$be92b6f5f03c0fe9 as Root, $f99a8c78507165f7$export$6d08773d2e66f8f2 as Item, $f99a8c78507165f7$export$adb584737d712b70 as Indicator};\n//# sourceMappingURL=index.mjs.map\n","import {useRef as $8LvvK$useRef, useMemo as $8LvvK$useMemo} from \"react\";\n\n\nfunction $010c2913dbd2fe3d$export$5cae361ad82dce8b(value) {\n const ref = $8LvvK$useRef({\n value: value,\n previous: value\n }); // We compare values before making an update to ensure that\n // a change has been made. This ensures the previous value is\n // persisted correctly between renders.\n return $8LvvK$useMemo(()=>{\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [\n value\n ]);\n}\n\n\n\n\nexport {$010c2913dbd2fe3d$export$5cae361ad82dce8b as usePrevious};\n//# sourceMappingURL=index.mjs.map\n"],"names":["DataFetcher","queryKey","render","renderError","initialData","loading","Spinner","dataFetcher","fetcher","showSpinnerOnRevalidate","onFetchSuccess","useSWRImmutable","then","res","Promise","resolve","catch","err","reject","fallbackData","data","error","isValidating","mutate","errorComponent","Error","onRetryClicked","memo","_path","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","props","width","height","viewBox","fill","xmlns","d","fillRule","clipRule","useTranslation","div","className","styles","p","message","OFFLINE_ERROR","Button","prefix","RetryIcon","size","ButtonSize","type","ButtonType","onClick","filterReciters","reciters","searchQuery","filteredReciter","Fuse","keys","threshold","search","map","item","logEmptySearchResults","query","source","SearchQuerySource","lang","usePersistPreferenceGroup","isLoading","actions","onXstateSettingsChange","router","useRouter","useState","setSearchQuery","audioService","useContext","AudioPlayerMachineContext","selectedReciterId","useSelector","state","context","reciterId","SpinnerContainer","Input","IconSearch","id","value","onChange","placeholder","fixedWidth","containerClassName","makeAvailableRecitersUrl","filteredReciters","RadioGroup","label","orientation","RadioGroupOrientation","toString","newId","reciter","find","Number","logItemSelectionChange","QueryParam","String","push","undefined","shallow","previousReciterId","send","PreferenceGroup","onSelectedReciterChange","sort","a","b","name","htmlFor","translatedName","style","span","InputSize","InputType","InputVariant","Medium","disabled","clearable","variant","suffix","onClearClicked","onKeyDown","inputMode","shouldFlipOnRTL","htmlType","isRequired","inputRef","inputValue","setInputValue","useEffect","classNames","Small","Large","Success","Warning","Main","input","required","dir","ref","event","newValue","target","shape","ButtonShape","ButtonVariant","ClearIcon","indicatorClassName","RadioGroupPrimitive","items","Root","isDisabled","Item","RadioRootOrientation","Vertical","defaultValue","children","direction","useDirection","aria-label","onValueChange","module","exports","$ce77a8961b41be9e$var$RADIO_NAME","$ce77a8961b41be9e$var$createRadioContext","$ce77a8961b41be9e$export$67d2296460f1b002","$ce77a8961b41be9e$var$RadioProvider","$ce77a8961b41be9e$var$useRadioContext","$ce77a8961b41be9e$export$d7b12c4107be0d61","forwardedRef","__scopeRadio","checked","onCheck","radioProps","button","setButton","composedRefs","node","hasConsumerStoppedPropagationRef","isFormControl","Boolean","closest","scope","role","$ce77a8961b41be9e$var$getState","current","isPropagationStopped","stopPropagation","$ce77a8961b41be9e$var$BubbleInput","control","bubbles","transform","$ce77a8961b41be9e$var$INDICATOR_NAME","$ce77a8961b41be9e$export$d35a9ffa9a04f9e7","forceMount","indicatorProps","present","inputProps","prevChecked","controlSize","inputProto","window","HTMLInputElement","prototype","setChecked","getOwnPropertyDescriptor","set","Event","dispatchEvent","defaultChecked","tabIndex","position","pointerEvents","opacity","margin","$f99a8c78507165f7$var$ARROW_KEYS","$f99a8c78507165f7$var$RADIO_GROUP_NAME","$f99a8c78507165f7$var$createRadioGroupContext","$f99a8c78507165f7$export$c547093f11b76da2","$f99a8c78507165f7$var$useRovingFocusGroupScope","$f99a8c78507165f7$var$useRadioScope","$f99a8c78507165f7$var$RadioGroupProvider","$f99a8c78507165f7$var$useRadioGroupContext","$f99a8c78507165f7$export$a98f0dcb43a68a25","__scopeRadioGroup","valueProp","loop","groupProps","rovingFocusGroupScope","setValue","prop","defaultProp","asChild","$f99a8c78507165f7$var$ITEM_NAME","$f99a8c78507165f7$export$9f866c100ef519e4","itemProps","radioScope","isArrowKeyPressedRef","handleKeyDown","includes","key","handleKeyUp","document","addEventListener","removeEventListener","focusable","active","preventDefault","onFocus","_ref$current","click","$f99a8c78507165f7$export$5fb54c671a65c88","$f99a8c78507165f7$export$be92b6f5f03c0fe9","$f99a8c78507165f7$export$6d08773d2e66f8f2","$f99a8c78507165f7$export$adb584737d712b70","$010c2913dbd2fe3d$export$5cae361ad82dce8b","previous"],"sourceRoot":""}
|