{"version":3,"file":"AlbumSettings-DAzcbX5_.js","sources":["../../../node_modules/@mui/utils/esm/getValidReactChildren/getValidReactChildren.js","../../../node_modules/@mui/material/ButtonGroup/buttonGroupClasses.js","../../../node_modules/@mui/material/ButtonGroup/ButtonGroup.js","../../../node_modules/@mui/material/ListItem/listItemClasses.js","../../../node_modules/@mui/material/ListItemButton/listItemButtonClasses.js","../../../node_modules/@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js","../../../node_modules/@mui/material/ListItemSecondaryAction/ListItemSecondaryAction.js","../../../node_modules/@mui/material/ListItem/ListItem.js","../../../node_modules/@mui/material/ListItemText/ListItemText.js","../../../app/javascript/entrypoints/Album/AlbumSettings.jsx"],"sourcesContent":["import * as React from 'react';\n\n/**\n * Gets only the valid children of a component,\n * and ignores any nullish or falsy child.\n *\n * @param children the children\n */\nexport default function getValidReactChildren(children) {\n return React.Children.toArray(children).filter(child => /*#__PURE__*/React.isValidElement(child));\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonGroupUtilityClass(slot) {\n return generateUtilityClass('MuiButtonGroup', slot);\n}\nconst buttonGroupClasses = generateUtilityClasses('MuiButtonGroup', ['root', 'contained', 'outlined', 'text', 'disableElevation', 'disabled', 'firstButton', 'fullWidth', 'vertical', 'grouped', 'groupedHorizontal', 'groupedVertical', 'groupedText', 'groupedTextHorizontal', 'groupedTextVertical', 'groupedTextPrimary', 'groupedTextSecondary', 'groupedOutlined', 'groupedOutlinedHorizontal', 'groupedOutlinedVertical', 'groupedOutlinedPrimary', 'groupedOutlinedSecondary', 'groupedContained', 'groupedContainedHorizontal', 'groupedContainedVertical', 'groupedContainedPrimary', 'groupedContainedSecondary', 'lastButton', 'middleButton']);\nexport default buttonGroupClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"disableElevation\", \"disableFocusRipple\", \"disableRipple\", \"fullWidth\", \"orientation\", \"size\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport getValidReactChildren from '@mui/utils/getValidReactChildren';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport buttonGroupClasses, { getButtonGroupUtilityClass } from './buttonGroupClasses';\nimport ButtonGroupContext from './ButtonGroupContext';\nimport ButtonGroupButtonContext from './ButtonGroupButtonContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${buttonGroupClasses.grouped}`]: styles.grouped\n }, {\n [`& .${buttonGroupClasses.grouped}`]: styles[`grouped${capitalize(ownerState.orientation)}`]\n }, {\n [`& .${buttonGroupClasses.grouped}`]: styles[`grouped${capitalize(ownerState.variant)}`]\n }, {\n [`& .${buttonGroupClasses.grouped}`]: styles[`grouped${capitalize(ownerState.variant)}${capitalize(ownerState.orientation)}`]\n }, {\n [`& .${buttonGroupClasses.grouped}`]: styles[`grouped${capitalize(ownerState.variant)}${capitalize(ownerState.color)}`]\n }, {\n [`& .${buttonGroupClasses.firstButton}`]: styles.firstButton\n }, {\n [`& .${buttonGroupClasses.lastButton}`]: styles.lastButton\n }, {\n [`& .${buttonGroupClasses.middleButton}`]: styles.middleButton\n }, styles.root, styles[ownerState.variant], ownerState.disableElevation === true && styles.disableElevation, ownerState.fullWidth && styles.fullWidth, ownerState.orientation === 'vertical' && styles.vertical];\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n disabled,\n disableElevation,\n fullWidth,\n orientation,\n variant\n } = ownerState;\n const slots = {\n root: ['root', variant, orientation === 'vertical' && 'vertical', fullWidth && 'fullWidth', disableElevation && 'disableElevation'],\n grouped: ['grouped', `grouped${capitalize(orientation)}`, `grouped${capitalize(variant)}`, `grouped${capitalize(variant)}${capitalize(orientation)}`, `grouped${capitalize(variant)}${capitalize(color)}`, disabled && 'disabled'],\n firstButton: ['firstButton'],\n lastButton: ['lastButton'],\n middleButton: ['middleButton']\n };\n return composeClasses(slots, getButtonGroupUtilityClass, classes);\n};\nconst ButtonGroupRoot = styled('div', {\n name: 'MuiButtonGroup',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'inline-flex',\n borderRadius: (theme.vars || theme).shape.borderRadius\n}, ownerState.variant === 'contained' && {\n boxShadow: (theme.vars || theme).shadows[2]\n}, ownerState.disableElevation && {\n boxShadow: 'none'\n}, ownerState.fullWidth && {\n width: '100%'\n}, ownerState.orientation === 'vertical' && {\n flexDirection: 'column'\n}, {\n [`& .${buttonGroupClasses.grouped}`]: _extends({\n minWidth: 40,\n '&:hover': _extends({}, ownerState.variant === 'contained' && {\n boxShadow: 'none'\n })\n }, ownerState.variant === 'contained' && {\n boxShadow: 'none'\n }),\n [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: _extends({}, ownerState.orientation === 'horizontal' && {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0\n }, ownerState.orientation === 'vertical' && {\n borderBottomRightRadius: 0,\n borderBottomLeftRadius: 0\n }, ownerState.variant === 'text' && ownerState.orientation === 'horizontal' && {\n borderRight: theme.vars ? `1px solid rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : `1px solid ${theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'}`,\n [`&.${buttonGroupClasses.disabled}`]: {\n borderRight: `1px solid ${(theme.vars || theme).palette.action.disabled}`\n }\n }, ownerState.variant === 'text' && ownerState.orientation === 'vertical' && {\n borderBottom: theme.vars ? `1px solid rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : `1px solid ${theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'}`,\n [`&.${buttonGroupClasses.disabled}`]: {\n borderBottom: `1px solid ${(theme.vars || theme).palette.action.disabled}`\n }\n }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n borderColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.5)` : alpha(theme.palette[ownerState.color].main, 0.5)\n }, ownerState.variant === 'outlined' && ownerState.orientation === 'horizontal' && {\n borderRightColor: 'transparent'\n }, ownerState.variant === 'outlined' && ownerState.orientation === 'vertical' && {\n borderBottomColor: 'transparent'\n }, ownerState.variant === 'contained' && ownerState.orientation === 'horizontal' && {\n borderRight: `1px solid ${(theme.vars || theme).palette.grey[400]}`,\n [`&.${buttonGroupClasses.disabled}`]: {\n borderRight: `1px solid ${(theme.vars || theme).palette.action.disabled}`\n }\n }, ownerState.variant === 'contained' && ownerState.orientation === 'vertical' && {\n borderBottom: `1px solid ${(theme.vars || theme).palette.grey[400]}`,\n [`&.${buttonGroupClasses.disabled}`]: {\n borderBottom: `1px solid ${(theme.vars || theme).palette.action.disabled}`\n }\n }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n borderColor: (theme.vars || theme).palette[ownerState.color].dark\n }, {\n '&:hover': _extends({}, ownerState.variant === 'outlined' && ownerState.orientation === 'horizontal' && {\n borderRightColor: 'currentColor'\n }, ownerState.variant === 'outlined' && ownerState.orientation === 'vertical' && {\n borderBottomColor: 'currentColor'\n })\n }),\n [`& .${buttonGroupClasses.lastButton},& .${buttonGroupClasses.middleButton}`]: _extends({}, ownerState.orientation === 'horizontal' && {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0\n }, ownerState.orientation === 'vertical' && {\n borderTopRightRadius: 0,\n borderTopLeftRadius: 0\n }, ownerState.variant === 'outlined' && ownerState.orientation === 'horizontal' && {\n marginLeft: -1\n }, ownerState.variant === 'outlined' && ownerState.orientation === 'vertical' && {\n marginTop: -1\n })\n}));\nconst ButtonGroup = /*#__PURE__*/React.forwardRef(function ButtonGroup(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiButtonGroup'\n });\n const {\n children,\n className,\n color = 'primary',\n component = 'div',\n disabled = false,\n disableElevation = false,\n disableFocusRipple = false,\n disableRipple = false,\n fullWidth = false,\n orientation = 'horizontal',\n size = 'medium',\n variant = 'outlined'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n component,\n disabled,\n disableElevation,\n disableFocusRipple,\n disableRipple,\n fullWidth,\n orientation,\n size,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const context = React.useMemo(() => ({\n className: classes.grouped,\n color,\n disabled,\n disableElevation,\n disableFocusRipple,\n disableRipple,\n fullWidth,\n size,\n variant\n }), [color, disabled, disableElevation, disableFocusRipple, disableRipple, fullWidth, size, variant, classes.grouped]);\n const validChildren = getValidReactChildren(children);\n const childrenCount = validChildren.length;\n const getButtonPositionClassName = index => {\n const isFirstButton = index === 0;\n const isLastButton = index === childrenCount - 1;\n if (isFirstButton && isLastButton) {\n return '';\n }\n if (isFirstButton) {\n return classes.firstButton;\n }\n if (isLastButton) {\n return classes.lastButton;\n }\n return classes.middleButton;\n };\n return /*#__PURE__*/_jsx(ButtonGroupRoot, _extends({\n as: component,\n role: \"group\",\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: /*#__PURE__*/_jsx(ButtonGroupContext.Provider, {\n value: context,\n children: validChildren.map((child, index) => {\n return /*#__PURE__*/_jsx(ButtonGroupButtonContext.Provider, {\n value: getButtonPositionClassName(index),\n children: child\n }, index);\n })\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? ButtonGroup.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, no elevation is used.\n * @default false\n */\n disableElevation: PropTypes.bool,\n /**\n * If `true`, the button keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n /**\n * If `true`, the button ripple effect is disabled.\n * @default false\n */\n disableRipple: PropTypes.bool,\n /**\n * If `true`, the buttons will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The component orientation (layout flow direction).\n * @default 'horizontal'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * The size of the component.\n * `small` is equivalent to the dense button styling.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * @default 'outlined'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['contained', 'outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default ButtonGroup;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemUtilityClass(slot) {\n return generateUtilityClass('MuiListItem', slot);\n}\nconst listItemClasses = generateUtilityClasses('MuiListItem', ['root', 'container', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'padding', 'button', 'secondaryAction', 'selected']);\nexport default listItemClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemButtonUtilityClass(slot) {\n return generateUtilityClass('MuiListItemButton', slot);\n}\nconst listItemButtonClasses = generateUtilityClasses('MuiListItemButton', ['root', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'selected']);\nexport default listItemButtonClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemSecondaryActionClassesUtilityClass(slot) {\n return generateUtilityClass('MuiListItemSecondaryAction', slot);\n}\nconst listItemSecondaryActionClasses = generateUtilityClasses('MuiListItemSecondaryAction', ['root', 'disableGutters']);\nexport default listItemSecondaryActionClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport ListContext from '../List/ListContext';\nimport { getListItemSecondaryActionClassesUtilityClass } from './listItemSecondaryActionClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n disableGutters,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disableGutters && 'disableGutters']\n };\n return composeClasses(slots, getListItemSecondaryActionClassesUtilityClass, classes);\n};\nconst ListItemSecondaryActionRoot = styled('div', {\n name: 'MuiListItemSecondaryAction',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.disableGutters && styles.disableGutters];\n }\n})(({\n ownerState\n}) => _extends({\n position: 'absolute',\n right: 16,\n top: '50%',\n transform: 'translateY(-50%)'\n}, ownerState.disableGutters && {\n right: 0\n}));\n\n/**\n * Must be used as the last child of ListItem to function properly.\n */\nconst ListItemSecondaryAction = /*#__PURE__*/React.forwardRef(function ListItemSecondaryAction(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiListItemSecondaryAction'\n });\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const context = React.useContext(ListContext);\n const ownerState = _extends({}, props, {\n disableGutters: context.disableGutters\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListItemSecondaryActionRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemSecondaryAction.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component, normally an `IconButton` or selection control.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nListItemSecondaryAction.muiName = 'ListItemSecondaryAction';\nexport default ListItemSecondaryAction;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\"],\n _excluded2 = [\"alignItems\", \"autoFocus\", \"button\", \"children\", \"className\", \"component\", \"components\", \"componentsProps\", \"ContainerComponent\", \"ContainerProps\", \"dense\", \"disabled\", \"disableGutters\", \"disablePadding\", \"divider\", \"focusVisibleClassName\", \"secondaryAction\", \"selected\", \"slotProps\", \"slots\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport { alpha } from '@mui/system/colorManipulator';\nimport isHostComponent from '@mui/utils/isHostComponent';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport ButtonBase from '../ButtonBase';\nimport isMuiElement from '../utils/isMuiElement';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport useForkRef from '../utils/useForkRef';\nimport ListContext from '../List/ListContext';\nimport listItemClasses, { getListItemUtilityClass } from './listItemClasses';\nimport { listItemButtonClasses } from '../ListItemButton';\nimport ListItemSecondaryAction from '../ListItemSecondaryAction';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.dense && styles.dense, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters, !ownerState.disablePadding && styles.padding, ownerState.button && styles.button, ownerState.hasSecondaryAction && styles.secondaryAction];\n};\nconst useUtilityClasses = ownerState => {\n const {\n alignItems,\n button,\n classes,\n dense,\n disabled,\n disableGutters,\n disablePadding,\n divider,\n hasSecondaryAction,\n selected\n } = ownerState;\n const slots = {\n root: ['root', dense && 'dense', !disableGutters && 'gutters', !disablePadding && 'padding', divider && 'divider', disabled && 'disabled', button && 'button', alignItems === 'flex-start' && 'alignItemsFlexStart', hasSecondaryAction && 'secondaryAction', selected && 'selected'],\n container: ['container']\n };\n return composeClasses(slots, getListItemUtilityClass, classes);\n};\nexport const ListItemRoot = styled('div', {\n name: 'MuiListItem',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n position: 'relative',\n textDecoration: 'none',\n width: '100%',\n boxSizing: 'border-box',\n textAlign: 'left'\n}, !ownerState.disablePadding && _extends({\n paddingTop: 8,\n paddingBottom: 8\n}, ownerState.dense && {\n paddingTop: 4,\n paddingBottom: 4\n}, !ownerState.disableGutters && {\n paddingLeft: 16,\n paddingRight: 16\n}, !!ownerState.secondaryAction && {\n // Add some space to avoid collision as `ListItemSecondaryAction`\n // is absolutely positioned.\n paddingRight: 48\n}), !!ownerState.secondaryAction && {\n [`& > .${listItemButtonClasses.root}`]: {\n paddingRight: 48\n }\n}, {\n [`&.${listItemClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n [`&.${listItemClasses.selected}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${listItemClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n },\n [`&.${listItemClasses.disabled}`]: {\n opacity: (theme.vars || theme).palette.action.disabledOpacity\n }\n}, ownerState.alignItems === 'flex-start' && {\n alignItems: 'flex-start'\n}, ownerState.divider && {\n borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n backgroundClip: 'padding-box'\n}, ownerState.button && {\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shortest\n }),\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: (theme.vars || theme).palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n [`&.${listItemClasses.selected}:hover`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n }\n }\n}, ownerState.hasSecondaryAction && {\n // Add some space to avoid collision as `ListItemSecondaryAction`\n // is absolutely positioned.\n paddingRight: 48\n}));\nconst ListItemContainer = styled('li', {\n name: 'MuiListItem',\n slot: 'Container',\n overridesResolver: (props, styles) => styles.container\n})({\n position: 'relative'\n});\n\n/**\n * Uses an additional container component if `ListItemSecondaryAction` is the last child.\n */\nconst ListItem = /*#__PURE__*/React.forwardRef(function ListItem(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiListItem'\n });\n const {\n alignItems = 'center',\n autoFocus = false,\n button = false,\n children: childrenProp,\n className,\n component: componentProp,\n components = {},\n componentsProps = {},\n ContainerComponent = 'li',\n ContainerProps: {\n className: ContainerClassName\n } = {},\n dense = false,\n disabled = false,\n disableGutters = false,\n disablePadding = false,\n divider = false,\n focusVisibleClassName,\n secondaryAction,\n selected = false,\n slotProps = {},\n slots = {}\n } = props,\n ContainerProps = _objectWithoutPropertiesLoose(props.ContainerProps, _excluded),\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n const context = React.useContext(ListContext);\n const childContext = React.useMemo(() => ({\n dense: dense || context.dense || false,\n alignItems,\n disableGutters\n }), [alignItems, context.dense, dense, disableGutters]);\n const listItemRef = React.useRef(null);\n useEnhancedEffect(() => {\n if (autoFocus) {\n if (listItemRef.current) {\n listItemRef.current.focus();\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('MUI: Unable to set focus to a ListItem whose component has not been rendered.');\n }\n }\n }, [autoFocus]);\n const children = React.Children.toArray(childrenProp);\n\n // v4 implementation, deprecated in v5, will be removed in v6\n const hasSecondaryAction = children.length && isMuiElement(children[children.length - 1], ['ListItemSecondaryAction']);\n const ownerState = _extends({}, props, {\n alignItems,\n autoFocus,\n button,\n dense: childContext.dense,\n disabled,\n disableGutters,\n disablePadding,\n divider,\n hasSecondaryAction,\n selected\n });\n const classes = useUtilityClasses(ownerState);\n const handleRef = useForkRef(listItemRef, ref);\n const Root = slots.root || components.Root || ListItemRoot;\n const rootProps = slotProps.root || componentsProps.root || {};\n const componentProps = _extends({\n className: clsx(classes.root, rootProps.className, className),\n disabled\n }, other);\n let Component = componentProp || 'li';\n if (button) {\n componentProps.component = componentProp || 'div';\n componentProps.focusVisibleClassName = clsx(listItemClasses.focusVisible, focusVisibleClassName);\n Component = ButtonBase;\n }\n\n // v4 implementation, deprecated in v5, will be removed in v6\n if (hasSecondaryAction) {\n // Use div by default.\n Component = !componentProps.component && !componentProp ? 'div' : Component;\n\n // Avoid nesting of li > li.\n if (ContainerComponent === 'li') {\n if (Component === 'li') {\n Component = 'div';\n } else if (componentProps.component === 'li') {\n componentProps.component = 'div';\n }\n }\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsxs(ListItemContainer, _extends({\n as: ContainerComponent,\n className: clsx(classes.container, ContainerClassName),\n ref: handleRef,\n ownerState: ownerState\n }, ContainerProps, {\n children: [/*#__PURE__*/_jsx(Root, _extends({}, rootProps, !isHostComponent(Root) && {\n as: Component,\n ownerState: _extends({}, ownerState, rootProps.ownerState)\n }, componentProps, {\n children: children\n })), children.pop()]\n }))\n });\n }\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {\n as: Component,\n ref: handleRef\n }, !isHostComponent(Root) && {\n ownerState: _extends({}, ownerState, rootProps.ownerState)\n }, componentProps, {\n children: [children, secondaryAction && /*#__PURE__*/_jsx(ListItemSecondaryAction, {\n children: secondaryAction\n })]\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItem.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Defines the `align-items` style property.\n * @default 'center'\n */\n alignItems: PropTypes.oneOf(['center', 'flex-start']),\n /**\n * If `true`, the list item is focused during the first mount.\n * Focus will also be triggered if the value changes from false to true.\n * @default false\n * @deprecated checkout [ListItemButton](/material-ui/api/list-item-button/) instead\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, the list item is a button (using `ButtonBase`). Props intended\n * for `ButtonBase` can then be applied to `ListItem`.\n * @default false\n * @deprecated checkout [ListItemButton](/material-ui/api/list-item-button/) instead\n */\n button: PropTypes.bool,\n /**\n * The content of the component if a `ListItemSecondaryAction` is used it must\n * be the last child.\n */\n children: chainPropTypes(PropTypes.node, props => {\n const children = React.Children.toArray(props.children);\n\n // React.Children.toArray(props.children).findLastIndex(isListItemSecondaryAction)\n let secondaryActionIndex = -1;\n for (let i = children.length - 1; i >= 0; i -= 1) {\n const child = children[i];\n if (isMuiElement(child, ['ListItemSecondaryAction'])) {\n secondaryActionIndex = i;\n break;\n }\n }\n\n // is ListItemSecondaryAction the last child of ListItem\n if (secondaryActionIndex !== -1 && secondaryActionIndex !== children.length - 1) {\n return new Error('MUI: You used an element after ListItemSecondaryAction. ' + 'For ListItem to detect that it has a secondary action ' + 'you must pass it as the last child to ListItem.');\n }\n return null;\n }),\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n root: PropTypes.object\n }),\n /**\n * The container component used when a `ListItemSecondaryAction` is the last child.\n * @default 'li'\n * @deprecated\n */\n ContainerComponent: elementTypeAcceptingRef,\n /**\n * Props applied to the container component if used.\n * @default {}\n * @deprecated\n */\n ContainerProps: PropTypes.object,\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n * The prop defaults to the value inherited from the parent List component.\n * @default false\n */\n dense: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n * @default false\n * @deprecated checkout [ListItemButton](/material-ui/api/list-item-button/) instead\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the left and right padding is removed.\n * @default false\n */\n disableGutters: PropTypes.bool,\n /**\n * If `true`, all padding is removed.\n * @default false\n */\n disablePadding: PropTypes.bool,\n /**\n * If `true`, a 1px light border is added to the bottom of the list item.\n * @default false\n */\n divider: PropTypes.bool,\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * The element to display at the end of ListItem.\n */\n secondaryAction: PropTypes.node,\n /**\n * Use to apply selected styling.\n * @default false\n * @deprecated checkout [ListItemButton](/material-ui/api/list-item-button/) instead\n */\n selected: PropTypes.bool,\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItem;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"disableTypography\", \"inset\", \"primary\", \"primaryTypographyProps\", \"secondary\", \"secondaryTypographyProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Typography from '../Typography';\nimport ListContext from '../List/ListContext';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled from '../styles/styled';\nimport listItemTextClasses, { getListItemTextUtilityClass } from './listItemTextClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n inset,\n primary,\n secondary,\n dense\n } = ownerState;\n const slots = {\n root: ['root', inset && 'inset', dense && 'dense', primary && secondary && 'multiline'],\n primary: ['primary'],\n secondary: ['secondary']\n };\n return composeClasses(slots, getListItemTextUtilityClass, classes);\n};\nconst ListItemTextRoot = styled('div', {\n name: 'MuiListItemText',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${listItemTextClasses.primary}`]: styles.primary\n }, {\n [`& .${listItemTextClasses.secondary}`]: styles.secondary\n }, styles.root, ownerState.inset && styles.inset, ownerState.primary && ownerState.secondary && styles.multiline, ownerState.dense && styles.dense];\n }\n})(({\n ownerState\n}) => _extends({\n flex: '1 1 auto',\n minWidth: 0,\n marginTop: 4,\n marginBottom: 4\n}, ownerState.primary && ownerState.secondary && {\n marginTop: 6,\n marginBottom: 6\n}, ownerState.inset && {\n paddingLeft: 56\n}));\nconst ListItemText = /*#__PURE__*/React.forwardRef(function ListItemText(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiListItemText'\n });\n const {\n children,\n className,\n disableTypography = false,\n inset = false,\n primary: primaryProp,\n primaryTypographyProps,\n secondary: secondaryProp,\n secondaryTypographyProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n dense\n } = React.useContext(ListContext);\n let primary = primaryProp != null ? primaryProp : children;\n let secondary = secondaryProp;\n const ownerState = _extends({}, props, {\n disableTypography,\n inset,\n primary: !!primary,\n secondary: !!secondary,\n dense\n });\n const classes = useUtilityClasses(ownerState);\n if (primary != null && primary.type !== Typography && !disableTypography) {\n primary = /*#__PURE__*/_jsx(Typography, _extends({\n variant: dense ? 'body2' : 'body1',\n className: classes.primary,\n component: primaryTypographyProps != null && primaryTypographyProps.variant ? undefined : 'span',\n display: \"block\"\n }, primaryTypographyProps, {\n children: primary\n }));\n }\n if (secondary != null && secondary.type !== Typography && !disableTypography) {\n secondary = /*#__PURE__*/_jsx(Typography, _extends({\n variant: \"body2\",\n className: classes.secondary,\n color: \"text.secondary\",\n display: \"block\"\n }, secondaryTypographyProps, {\n children: secondary\n }));\n }\n return /*#__PURE__*/_jsxs(ListItemTextRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: [primary, secondary]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemText.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Alias for the `primary` prop.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, the children won't be wrapped by a Typography component.\n * This can be useful to render an alternative Typography variant by wrapping\n * the `children` (or `primary`) text, and optional `secondary` text\n * with the Typography component.\n * @default false\n */\n disableTypography: PropTypes.bool,\n /**\n * If `true`, the children are indented.\n * This should be used if there is no left avatar or left icon.\n * @default false\n */\n inset: PropTypes.bool,\n /**\n * The main content element.\n */\n primary: PropTypes.node,\n /**\n * These props will be forwarded to the primary typography component\n * (as long as disableTypography is not `true`).\n */\n primaryTypographyProps: PropTypes.object,\n /**\n * The secondary content element.\n */\n secondary: PropTypes.node,\n /**\n * These props will be forwarded to the secondary typography component\n * (as long as disableTypography is not `true`).\n */\n secondaryTypographyProps: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItemText;","import React, { useState, useEffect } from \"react\";\nimport {\n Box,\n Accordion,\n AccordionSummary,\n AccordionDetails,\n Typography,\n ButtonGroup,\n Button,\n TextField,\n Alert,\n} from \"@mui/material\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport { colors } from \"../lib/theme\";\nimport { getMultipleUsersData, db } from \"../../shared/firebase\";\nimport {\n collection,\n query,\n where,\n getDocs,\n doc,\n updateDoc,\n arrayUnion,\n arrayRemove,\n} from \"firebase/firestore\";\nimport { Link } from \"react-router-dom\";\nimport List from \"@mui/material/List\";\nimport ListItem from \"@mui/material/ListItem\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport ListItemSecondaryAction from \"@mui/material/ListItemSecondaryAction\";\nimport IconButton from \"@mui/material/IconButton\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\n\nconst AlbumSettings = ({\n privacyLevel,\n onPrivacyChange,\n user,\n userId,\n albumId,\n initialSharedWith = [],\n title,\n imageUrl,\n creatorName,\n invitedTo = [],\n}) => {\n const [sharedEmails, setSharedEmails] = useState([]);\n const [errorMessage, setErrorMessage] = useState(\"\");\n const [usersData, setUsersData] = useState([]);\n const [sharedWith, setSharedWith] = useState(initialSharedWith);\n const [newEmail, setNewEmail] = useState(\"\");\n const [pendingInvites, setPendingInvites] = useState(invitedTo);\n const [removedUserIds, setRemovedUserIds] = useState([]);\n\n useEffect(() => {\n console.log(\n \"AlbumSettings mounted. albumId:\",\n albumId,\n \"initialSharedWith:\",\n initialSharedWith\n );\n const fetchSharedEmails = async () => {\n if (!initialSharedWith || initialSharedWith.length === 0) {\n console.log(\"No shared users to fetch\");\n return;\n }\n\n try {\n console.log(\"Fetching user data for:\", initialSharedWith);\n const fetchedUsersData = await getMultipleUsersData(initialSharedWith);\n console.log(\"Fetched users data:\", fetchedUsersData);\n\n if (fetchedUsersData.length === 0) {\n console.error(\"No user data returned from getMultipleUsersData\");\n setErrorMessage(\n \"Failed to fetch shared user data. Please try again later.\"\n );\n return;\n }\n\n setUsersData(fetchedUsersData);\n const emails = fetchedUsersData\n .map((userData) => userData?.email)\n .filter(Boolean);\n console.log(\"Extracted emails:\", emails);\n setSharedEmails(emails);\n setSharedWith(initialSharedWith);\n } catch (error) {\n console.error(\"Error fetching shared emails:\", error);\n setErrorMessage(\n \"An error occurred while fetching shared user data. Please try again later.\"\n );\n }\n };\n\n fetchSharedEmails();\n }, [initialSharedWith, albumId]);\n\n useEffect(() => {\n setPendingInvites(invitedTo);\n }, [invitedTo]);\n\n const handlePrivacyChange = (newLevel) => {\n if (user && user.uid === userId) {\n onPrivacyChange(newLevel);\n }\n };\n\n const handleAddEmail = async () => {\n if (!isValidEmail(newEmail)) {\n setErrorMessage(\"Please enter a valid email address.\");\n return;\n }\n\n try {\n const userDoc = await getUserDocByEmail(newEmail);\n if (userDoc) {\n if (sharedWith.includes(userDoc.id)) {\n setErrorMessage(\"This user is already shared with the album.\");\n return;\n }\n const updatedSharedWith = [...sharedWith, userDoc.id];\n setSharedWith(updatedSharedWith);\n onShareChange(updatedSharedWith);\n setSharedEmails([...sharedEmails, newEmail]);\n await sendInvitation(newEmail);\n } else {\n if (window.confirm(`No account found for ${newEmail}. Would you like to invite them?`)) {\n await sendInvitation(newEmail);\n } else {\n setErrorMessage(`There is no Golden Record account associated with ${newEmail}`);\n return;\n }\n }\n setNewEmail(\"\");\n setErrorMessage(\"\");\n } catch (error) {\n console.error(\"Error adding email:\", error);\n setErrorMessage(\"An error occurred. Please try again.\");\n }\n };\n\n const sendInvitation = async (email) => {\n try {\n const lowercaseEmail = email.toLowerCase();\n const response = await fetch(\"/albums/send_invitation\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": document.querySelector('meta[name=\"csrf-token\"]').content,\n },\n body: JSON.stringify({\n recipient_email: lowercaseEmail,\n creator_name: creatorName,\n album_id: albumId,\n title,\n image_url: imageUrl || \"https://media.cleanshot.cloud/media/39638/EqTfKzYIW6XE7D5BPycNcGWaEDFljKrGspQjzlVu.jpeg?Expires=1726182226&Signature=XX-z7OeX6I-W7RFbGufsorKXcakHHWDxNT7GmAUhEfdytiV6EQb4eaXip9wSZ0rNUQ~aLfwPhHC36hjexN~EbuAGW4NPeytfj6MKucP75Lbgox42uoB8nC61sopl1Qru3981fZKJ7Z90b2MQ6sKDIkM0q-v~adrgprl9RE47TSyI~SRfin5N9m4bWJS4IP-k6CrvQIM2dXh6lfjfeuvQ71O~Prn2exb3u67LSbtY-DfPAbe6KUMhx5vGLsYLPuOKz44n9WtxLNUTY2G9MhX9pv-S-rHk~nt-axejgsxE-3bd9JwptbvCWsCSPbwtT13eXCHc6zlBz1pnlDusXwntMg__&Key-Pair-Id=K269JMAT9ZF4GZ\",\n }),\n });\n\n if (!response.ok) {\n const errorData = await response.json();\n throw new Error(errorData.message || \"Failed to send invitation\");\n }\n\n // Update Firestore\n const albumRef = doc(db, \"albums\", albumId);\n await updateDoc(albumRef, {\n invitedTo: arrayUnion(lowercaseEmail),\n });\n\n setPendingInvites([...pendingInvites, lowercaseEmail]);\n setNewEmail(\"\");\n setErrorMessage(\"\");\n } catch (error) {\n console.error(\"Error sending invitation:\", error);\n setErrorMessage(`Failed to send invitation: ${error.message}`);\n }\n };\n\n const getUserDocByEmail = async (email) => {\n const usersRef = collection(db, \"users\");\n const q = query(usersRef, where(\"email\", \"==\", email));\n const querySnapshot = await getDocs(q);\n return querySnapshot.empty ? null : querySnapshot.docs[0];\n };\n\n // Helper function to validate email\n const isValidEmail = (email) => {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n };\n\n const onShareChange = async (updatedSharedWith) => {\n if (!albumId) {\n console.error(\"albumId is undefined\");\n setErrorMessage(\"Cannot update album: missing albumId\");\n return;\n }\n\n try {\n const albumRef = doc(db, \"albums\", albumId);\n await updateDoc(albumRef, { sharedWith: updatedSharedWith });\n setSharedWith(updatedSharedWith);\n console.log(\"Album updated successfully\");\n } catch (error) {\n console.error(\"Error updating album shared users:\", error);\n setErrorMessage(`Failed to update shared users: ${error.message}`);\n }\n };\n\n const handleRemoveUser = (userIdToRemove) => {\n if (user.uid !== userId && user.uid !== userIdToRemove) {\n setErrorMessage(\"You don't have permission to remove this user\");\n return;\n }\n\n const updatedSharedWith = sharedWith.filter(id => id !== userIdToRemove);\n const updatedEmails = sharedEmails.filter(email => {\n const userData = usersData.find(user => user.id === userIdToRemove);\n return userData.email !== email;\n });\n\n setSharedEmails(updatedEmails);\n setRemovedUserIds([...removedUserIds, userIdToRemove]);\n onShareChange(updatedSharedWith);\n };\n\n const handleCancelInvite = async (invite) => {\n try {\n const albumRef = doc(db, \"albums\", albumId);\n await updateDoc(albumRef, {\n invitedTo: arrayRemove(invite),\n });\n setPendingInvites((prevInvites) =>\n prevInvites.filter((item) => item !== invite)\n );\n } catch (error) {\n console.error(\"Error cancelling invitation:\", error);\n setErrorMessage(`Failed to cancel invitation: ${error.message}`);\n }\n };\n\n const getInviteEmail = (invite) => {\n if (typeof invite === \"string\") return invite;\n if (typeof invite === \"object\" && invite !== null) {\n return invite.email || invite.uid || JSON.stringify(invite);\n }\n return String(invite);\n };\n\n return (\n \n }>\n Sharing and Permissions\n \n \n {user && user.uid === userId && (\n \n Privacy Level:\n \n {[\"Private\", \"Shared\", \"Public\"].map((label, index) => (\n handlePrivacyChange(index)}\n variant={privacyLevel === index ? \"contained\" : \"secondary\"}\n sx={{\n bgcolor:\n privacyLevel === index ? colors.navy : \"transparent\",\n color: privacyLevel === index ? colors.white : colors.navy,\n borderColor: colors.navy,\n \"&:hover\": {\n bgcolor:\n privacyLevel === index\n ? colors.navy\n : \"rgba(0, 0, 0, 0.04)\",\n borderColor: colors.navy,\n },\n fontSize: \"0.8rem\",\n padding: \"4px 8px\",\n }}\n >\n {label}\n \n ))}\n \n \n )}\n\n {privacyLevel === 1 && (\n <>\n Share with:\n \n setNewEmail(e.target.value)}\n onKeyPress={(e) => e.key === \"Enter\" && handleAddEmail()}\n variant=\"outlined\"\n placeholder=\"Enter email address\"\n fullWidth\n size=\"small\"\n sx={{ mr: 1 }}\n />\n \n Add\n \n \n\n {errorMessage && (\n \n {errorMessage}\n \n )}\n\n \n Shared with:\n \n {usersData.length === 0 ? (\n \n This album hasn't been shared with anyone yet.\n \n ) : (\n \n {usersData\n .filter((userData) => !removedUserIds.includes(userData.id))\n .map((userData) => (\n \n \n {user && (user.uid === userId || user.uid === userData.id) && (\n \n handleRemoveUser(userData.id)}\n >\n \n \n \n )}\n \n ))}\n \n )}\n\n \n Pending Invites:\n \n {pendingInvites.length === 0 ? (\n \n No pending invites.\n \n ) : (\n \n {pendingInvites.map((invite, index) => {\n const email = getInviteEmail(invite);\n return (\n \n \n {user && user.uid === userId && (\n \n handleCancelInvite(invite)}\n >\n \n \n \n )}\n \n );\n })}\n \n )}\n \n )}\n \n \n );\n};\n\nexport default AlbumSettings;\n"],"names":["getValidReactChildren","children","React.Children","child","React.isValidElement","getButtonGroupUtilityClass","slot","generateUtilityClass","buttonGroupClasses","generateUtilityClasses","_excluded","overridesResolver","props","styles","ownerState","capitalize","useUtilityClasses","classes","color","disabled","disableElevation","fullWidth","orientation","variant","slots","composeClasses","ButtonGroupRoot","styled","theme","_extends","alpha","ButtonGroup","React.forwardRef","inProps","ref","useDefaultProps","className","component","disableFocusRipple","disableRipple","size","other","_objectWithoutPropertiesLoose","context","React.useMemo","validChildren","childrenCount","getButtonPositionClassName","index","isFirstButton","isLastButton","_jsx","clsx","ButtonGroupContext","ButtonGroupButtonContext","getListItemUtilityClass","listItemClasses","listItemButtonClasses","getListItemSecondaryActionClassesUtilityClass","disableGutters","ListItemSecondaryActionRoot","ListItemSecondaryAction","React.useContext","ListContext","_excluded2","alignItems","button","dense","disablePadding","divider","hasSecondaryAction","selected","ListItemRoot","ListItemContainer","ListItem","autoFocus","childrenProp","componentProp","components","componentsProps","ContainerComponent","ContainerClassName","focusVisibleClassName","secondaryAction","slotProps","ContainerProps","childContext","listItemRef","React.useRef","useEnhancedEffect","isMuiElement","handleRef","useForkRef","Root","rootProps","componentProps","Component","ButtonBase","_jsxs","isHostComponent","inset","primary","secondary","getListItemTextUtilityClass","ListItemTextRoot","listItemTextClasses","ListItemText","disableTypography","primaryProp","primaryTypographyProps","secondaryProp","secondaryTypographyProps","Typography","AlbumSettings","privacyLevel","onPrivacyChange","user","userId","albumId","initialSharedWith","title","imageUrl","creatorName","invitedTo","sharedEmails","setSharedEmails","useState","errorMessage","setErrorMessage","usersData","setUsersData","sharedWith","setSharedWith","newEmail","setNewEmail","pendingInvites","setPendingInvites","removedUserIds","setRemovedUserIds","useEffect","fetchedUsersData","getMultipleUsersData","emails","userData","error","handlePrivacyChange","newLevel","handleAddEmail","isValidEmail","userDoc","getUserDocByEmail","updatedSharedWith","onShareChange","sendInvitation","email","lowercaseEmail","response","errorData","albumRef","doc","db","updateDoc","arrayUnion","usersRef","collection","q","query","where","querySnapshot","getDocs","handleRemoveUser","userIdToRemove","id","updatedEmails","handleCancelInvite","invite","arrayRemove","prevInvites","item","getInviteEmail","Accordion","colors","AccordionSummary","ExpandMoreIcon","AccordionDetails","Box","React","label","Button","TextField","e","Alert","List","IconButton","DeleteIcon"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]}