@charcoal-ui/react 2.0.0 → 2.0.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/core/ComponentAbstraction.tsx","../src/_lib/index.ts","../src/styled.ts","../src/components/Clickable/index.tsx","../src/components/Button/index.tsx","../src/components/IconButton/index.tsx","../src/components/Radio/index.tsx","../src/components/MultiSelect/context.ts","../src/components/MultiSelect/index.tsx","../src/components/Switch/index.tsx","../src/components/FieldLabel/index.tsx","../src/components/TextField/index.tsx","../src/components/Icon/index.tsx","../src/components/Modal/index.tsx","../src/components/Modal/ModalPlumbing.tsx","../src/components/LoadingSpinner/index.tsx","../../../node_modules/clsx/dist/clsx.m.js","../../../node_modules/@react-aria/utils/dist/module.js","../../../node_modules/@react-aria/i18n/dist/real-module.js","../../../node_modules/@react-aria/selection/dist/module.js","../../../node_modules/@react-aria/listbox/dist/module.js","../src/components/DropdownSelector/Listbox.tsx","../src/components/DropdownSelector/Popover.tsx","../src/components/DropdownSelector/index.tsx","../src/components/SegmentedControl/RadioGroupContext.tsx","../src/components/SegmentedControl/index.tsx","../src/components/Checkbox/index.tsx"],"sourcesContent":["import React, { useContext } from 'react'\n\nexport type LinkProps = {\n /**\n * リンクのURL\n */\n to: string\n} & Omit<React.ComponentPropsWithoutRef<'a'>, 'href'>\n\nexport const DefaultLink = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function DefaultLink({ to, children, ...rest }, ref) {\n return (\n <a href={to} ref={ref} {...rest}>\n {children}\n </a>\n )\n }\n)\n\ninterface Components {\n Link: React.ComponentType<React.ComponentPropsWithRef<typeof DefaultLink>>\n}\n\nconst DefaultValue: Components = {\n Link: DefaultLink,\n}\n\nconst ComponentAbstractionContext = React.createContext(DefaultValue)\n\ninterface Props {\n children: React.ReactNode\n components: Partial<Components>\n}\n\nexport default function ComponentAbstraction({ children, components }: Props) {\n return (\n <ComponentAbstractionContext.Provider\n value={{ ...DefaultValue, ...components }}\n >\n {children}\n </ComponentAbstractionContext.Provider>\n )\n}\n\nexport function useComponentAbstraction() {\n return useContext(ComponentAbstractionContext)\n}\n","/**\n * 今後ポートされる予定の汎用的な関数群\n */\n\n/**\n * Function used to assert a given code path is unreachable\n */\nexport function unreachable(): never\n/**\n * Function used to assert a given code path is unreachable.\n * Very useful for ensuring switches are exhaustive:\n *\n * ```ts\n * switch (a.type) {\n * case Types.A:\n * case Types.B:\n * break\n * default:\n * unreachable(a) // will cause a build error if there was\n * // a Types.C that was not checked\n * }\n * ```\n *\n * @param value Value to be asserted as unreachable\n */\n// NOTE: Uses separate overloads, _not_ `value?: never`, to not allow `undefined` to be passed\n// eslint-disable-next-line @typescript-eslint/unified-signatures\nexport function unreachable(value: never): never\nexport function unreachable(value?: never): never {\n throw new Error(\n arguments.length === 0\n ? 'unreachable'\n : `unreachable (${JSON.stringify(value)})`\n )\n}\n","import styled from 'styled-components'\nimport { createTheme } from '@charcoal-ui/styled'\nexport const theme = createTheme(styled)\n","import React from 'react'\nimport styled, { css } from 'styled-components'\nimport {\n LinkProps,\n useComponentAbstraction,\n} from '../../core/ComponentAbstraction'\nimport { disabledSelector } from '@charcoal-ui/utils'\n\ninterface BaseProps {\n /**\n * クリックの無効化\n */\n disabled?: boolean\n}\n\ninterface LinkBaseProps {\n /**\n * リンクのURL。指定するとbuttonタグではなくaタグとして描画される\n */\n to: string\n}\n\nexport type ClickableProps =\n | (BaseProps & Omit<React.ComponentPropsWithoutRef<'button'>, 'disabled'>)\n | (BaseProps & LinkBaseProps & Omit<LinkProps, 'to'>)\nexport type ClickableElement = HTMLButtonElement & HTMLAnchorElement\n\nconst Clickable = React.forwardRef<ClickableElement, ClickableProps>(\n function Clickable(props, ref) {\n const { Link } = useComponentAbstraction()\n if ('to' in props) {\n const { onClick, disabled = false, ...rest } = props\n return (\n <A<typeof Link>\n {...rest}\n as={disabled ? undefined : Link}\n onClick={disabled ? undefined : onClick}\n aria-disabled={disabled}\n ref={ref}\n />\n )\n } else {\n return <Button {...props} ref={ref} />\n }\n }\n)\nexport default Clickable\n\nconst clickableCss = css`\n /* Clickable style */\n cursor: pointer;\n\n ${disabledSelector} {\n cursor: default;\n }\n`\n\nconst Button = styled.button`\n /* Reset button appearance */\n appearance: none;\n background: transparent;\n padding: 0;\n border-style: none;\n outline: none;\n color: inherit;\n text-rendering: inherit;\n letter-spacing: inherit;\n word-spacing: inherit;\n\n &:focus {\n outline: none;\n }\n\n /* Change the font styles in all browsers. */\n font: inherit;\n\n /* Remove the margin in Firefox and Safari. */\n margin: 0;\n\n /* Show the overflow in Edge. */\n overflow: visible;\n\n /* Remove the inheritance of text transform in Firefox. */\n text-transform: none;\n\n /* Remove the inner border and padding in Firefox. */\n &::-moz-focus-inner {\n border-style: none;\n padding: 0;\n }\n\n ${clickableCss}\n`\n\nconst A = styled.span`\n /* Reset a-tag appearance */\n color: inherit;\n\n &:focus {\n outline: none;\n }\n\n .text {\n top: calc(1em + 2em);\n }\n\n ${clickableCss}\n`\n","import React from 'react'\nimport styled from 'styled-components'\nimport { unreachable } from '../../_lib'\nimport { theme } from '../../styled'\nimport Clickable, { ClickableElement, ClickableProps } from '../Clickable'\n\ntype Variant = 'Primary' | 'Default' | 'Overlay' | 'Danger' | 'Navigation'\ntype Size = 'S' | 'M'\n\ninterface StyledProps {\n /**\n * ボタンのスタイル\n */\n variant: Variant\n /**\n * ボタンのサイズ\n */\n size: Size\n /**\n * 幅を最大まで広げて描画\n */\n fixed: boolean\n}\n\nexport type ButtonProps = Partial<StyledProps> & ClickableProps\n\nconst Button = React.forwardRef<ClickableElement, ButtonProps>(function Button(\n {\n children,\n variant = 'Default',\n size = 'M',\n fixed = false,\n disabled = false,\n ...rest\n },\n ref\n) {\n return (\n <StyledButton\n {...rest}\n disabled={disabled}\n variant={variant}\n size={size}\n fixed={fixed}\n ref={ref}\n >\n {children}\n </StyledButton>\n )\n})\nexport default Button\n\nconst StyledButton = styled(Clickable)\n .withConfig<StyledProps>({\n shouldForwardProp(prop) {\n // fixed は <button> 要素に渡ってはいけない\n return prop !== 'fixed'\n },\n })\n .attrs<StyledProps, ReturnType<typeof styledProps>>(styledProps)`\n width: ${(p) => (p.fixed ? 'stretch' : 'min-content')};\n display: inline-grid;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n\n ${(p) =>\n theme((o) => [\n o.font[p.font].hover.press,\n o.bg[p.background].hover.press,\n o.typography(14).bold.preserveHalfLeading,\n o.padding.horizontal(p.padding),\n o.disabled,\n o.borderRadius('oval'),\n o.outline.default.focus,\n ])}\n\n /* よく考えたらheight=32って定義が存在しないな... */\n height: ${(p) => p.height}px;\n`\n\nfunction styledProps(props: StyledProps) {\n return {\n ...props,\n ...variantToProps(props.variant),\n ...sizeToProps(props.size),\n }\n}\n\nfunction variantToProps(variant: Variant) {\n switch (variant) {\n case 'Overlay':\n return { font: 'text5', background: 'surface4' } as const\n case 'Default':\n return { font: 'text2', background: 'surface3' } as const\n case 'Primary':\n return { font: 'text5', background: 'brand' } as const\n case 'Navigation':\n return { font: 'text5', background: 'surface6' } as const\n case 'Danger':\n return { font: 'text5', background: 'assertive' } as const\n default:\n return unreachable(variant)\n }\n}\n\nfunction sizeToProps(size: Size) {\n switch (size) {\n case 'S':\n return {\n height: 32,\n padding: 16,\n } as const\n case 'M':\n return {\n height: 40,\n padding: 24,\n } as const\n }\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { theme } from '../../styled'\nimport Clickable, { ClickableElement, ClickableProps } from '../Clickable'\nimport type { KnownIconType } from '@charcoal-ui/icons'\n\ntype Variant = 'Default' | 'Overlay'\ntype Size = 'XS' | 'S' | 'M'\n\ninterface StyledProps {\n readonly variant?: Variant\n readonly size?: Size\n readonly icon: keyof KnownIconType\n}\n\nexport type IconButtonProps = StyledProps & ClickableProps\n\nconst IconButton = React.forwardRef<ClickableElement, IconButtonProps>(\n function IconButtonInner(\n { variant = 'Default', size = 'M', icon, ...rest }: IconButtonProps,\n ref\n ) {\n validateIconSize(size, icon)\n return (\n <StyledIconButton {...rest} ref={ref} variant={variant} size={size}>\n <pixiv-icon name={icon} />\n </StyledIconButton>\n )\n }\n)\n\nexport default IconButton\n\nconst StyledIconButton = styled(Clickable).attrs<\n Required<StyledProps>,\n ReturnType<typeof styledProps>\n>(styledProps)`\n user-select: none;\n\n width: ${(p) => p.width}px;\n height: ${(p) => p.height}px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ${({ font, background }) =>\n theme((o) => [\n o.font[font],\n o.bg[background].hover.press,\n o.disabled,\n o.borderRadius('oval'),\n o.outline.default.focus,\n ])}\n`\n\nfunction styledProps(props: Required<StyledProps>) {\n return {\n ...props,\n ...variantToProps(props.variant),\n ...sizeToProps(props.size),\n }\n}\n\nfunction variantToProps(variant: Variant) {\n switch (variant) {\n case 'Default':\n return { font: 'text3', background: 'transparent' } as const\n case 'Overlay':\n return { font: 'text5', background: 'surface4' } as const\n }\n}\n\nfunction sizeToProps(size: Size) {\n switch (size) {\n case 'XS':\n return {\n width: 20,\n height: 20,\n }\n case 'S':\n return {\n width: 32,\n height: 32,\n }\n case 'M':\n return {\n width: 40,\n height: 40,\n }\n }\n}\n\n/**\n * validates matches of size and icon\n */\nfunction validateIconSize(size: Size, icon: keyof KnownIconType) {\n let requiredIconSize: string\n switch (size) {\n case 'XS':\n requiredIconSize = '16'\n break\n case 'S':\n case 'M':\n requiredIconSize = '24'\n break\n }\n // アイコン名は サイズ/名前\n const result = /^\\d*/u.exec(icon)\n if (result == null) {\n throw new Error('Invalid icon name')\n }\n const [iconSize] = result\n if (iconSize !== requiredIconSize) {\n // eslint-disable-next-line no-console\n console.warn(\n `IconButton with size \"${size}\" expect icon size \"${requiredIconSize}, but got \"${iconSize}\"`\n )\n }\n}\n","import React, { useCallback, useContext } from 'react'\nimport styled from 'styled-components'\nimport warning from 'warning'\nimport { theme } from '../../styled'\nimport { px } from '@charcoal-ui/utils'\n\nexport type RadioProps = React.PropsWithChildren<{\n value: string\n forceChecked?: boolean\n disabled?: boolean\n}>\n\nexport default function Radio({\n value,\n forceChecked = false,\n disabled = false,\n children,\n}: RadioProps) {\n const {\n name,\n selected,\n disabled: isParentDisabled,\n readonly,\n hasError,\n onChange,\n } = useContext(RadioGroupContext)\n\n warning(\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n name !== undefined,\n `\"name\" is not Provided for <Radio>. Perhaps you forgot to wrap with <RadioGroup> ?`\n )\n\n const isSelected = value === selected\n const isDisabled = disabled || isParentDisabled\n const isReadonly = readonly && !isSelected\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(e.currentTarget.value)\n },\n [onChange]\n )\n\n return (\n <RadioRoot aria-disabled={isDisabled || isReadonly}>\n <RadioInput\n name={name}\n value={value}\n checked={forceChecked || isSelected}\n hasError={hasError}\n onChange={handleChange}\n disabled={isDisabled || isReadonly}\n />\n {children != null && <RadioLabel>{children}</RadioLabel>}\n </RadioRoot>\n )\n}\n\nconst RadioRoot = styled.label`\n display: grid;\n grid-template-columns: auto 1fr;\n grid-gap: ${({ theme }) => px(theme.spacing[4])};\n align-items: center;\n cursor: pointer;\n\n ${theme((o) => [o.disabled])}\n`\n\nexport const RadioInput = styled.input.attrs({ type: 'radio' })<{\n hasError?: boolean\n}>`\n /** Make prior to browser default style */\n &[type='radio'] {\n appearance: none;\n display: block;\n box-sizing: border-box;\n\n padding: 6px;\n\n width: 20px;\n height: 20px;\n\n ${({ hasError = false }) =>\n theme((o) => [\n o.borderRadius('oval'),\n o.bg.text5.hover.press,\n hasError && o.outline.assertive,\n ])};\n\n &:not(:checked) {\n border-width: 2px;\n border-style: solid;\n border-color: ${({ theme }) => theme.color.text4};\n }\n\n &:checked {\n ${theme((o) => o.bg.brand.hover.press)}\n\n &::after {\n content: '';\n display: block;\n width: 8px;\n height: 8px;\n pointer-events: none;\n\n ${theme((o) => [o.bg.text5.hover.press, o.borderRadius('oval')])}\n }\n }\n\n ${theme((o) => o.outline.default.focus)}\n }\n`\n\nconst RadioLabel = styled.div`\n ${theme((o) => [o.typography(14)])}\n`\n\nexport type RadioGroupProps = React.PropsWithChildren<{\n className?: string\n value?: string\n label: string\n name: string\n onChange(next: string): void\n disabled?: boolean\n readonly?: boolean\n hasError?: boolean\n}>\n\n// TODO: use (or polyfill) flex gap\nconst StyledRadioGroup = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n grid-gap: ${({ theme }) => px(theme.spacing[8])};\n`\n\ninterface RadioGroupContext {\n name: string\n selected?: string\n disabled: boolean\n readonly: boolean\n hasError: boolean\n onChange: (next: string) => void\n}\n\nconst RadioGroupContext = React.createContext<RadioGroupContext>({\n name: undefined as never,\n selected: undefined,\n disabled: false,\n readonly: false,\n hasError: false,\n onChange() {\n throw new Error(\n 'Cannot find onChange() handler. Perhaps you forgot to wrap with <RadioGroup> ?'\n )\n },\n})\n\nexport function RadioGroup({\n className,\n value,\n label,\n name,\n onChange,\n disabled,\n readonly,\n hasError,\n children,\n}: RadioGroupProps) {\n const handleChange = useCallback(\n (next: string) => {\n onChange(next)\n },\n [onChange]\n )\n\n return (\n <RadioGroupContext.Provider\n value={{\n name,\n selected: value,\n disabled: disabled ?? false,\n readonly: readonly ?? false,\n hasError: hasError ?? false,\n onChange: handleChange,\n }}\n >\n <StyledRadioGroup\n role=\"radiogroup\"\n aria-orientation=\"vertical\"\n aria-label={label}\n aria-invalid={hasError}\n className={className}\n >\n {children}\n </StyledRadioGroup>\n </RadioGroupContext.Provider>\n )\n}\n","import { createContext } from 'react'\n\ntype MultiSelectGroupContext = {\n name: string\n selected: string[]\n disabled: boolean\n readonly: boolean\n hasError: boolean\n onChange: ({ value, selected }: { value: string; selected: boolean }) => void\n}\n\nexport const MultiSelectGroupContext = createContext<MultiSelectGroupContext>({\n name: undefined as never,\n selected: [],\n disabled: false,\n readonly: false,\n hasError: false,\n onChange() {\n throw new Error(\n 'Cannot find `onChange()` handler. Perhaps you forgot to wrap it with `<MultiSelectGroup />` ?'\n )\n },\n})\n","import React, { ChangeEvent, useCallback, useContext } from 'react'\nimport styled, { css } from 'styled-components'\nimport warning from 'warning'\nimport { theme } from '../../styled'\nimport { disabledSelector, px } from '@charcoal-ui/utils'\n\nimport { MultiSelectGroupContext } from './context'\n\nexport type MultiSelectProps = React.PropsWithChildren<{\n value: string\n forceChecked?: boolean\n disabled?: boolean\n variant?: 'default' | 'overlay'\n onChange?: (payload: { value: string; selected: boolean }) => void\n}>\n\nexport default function MultiSelect({\n value,\n forceChecked = false,\n disabled = false,\n onChange,\n variant = 'default',\n children,\n}: MultiSelectProps) {\n const {\n name,\n selected,\n disabled: parentDisabled,\n readonly,\n hasError,\n onChange: parentOnChange,\n } = useContext(MultiSelectGroupContext)\n\n warning(\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n name !== undefined,\n `\"name\" is not Provided for <MultiSelect>. Perhaps you forgot to wrap with <MultiSelectGroup> ?`\n )\n\n const isSelected = selected.includes(value) || forceChecked\n const isDisabled = disabled || parentDisabled || readonly\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (!(event.currentTarget instanceof HTMLInputElement)) {\n return\n }\n if (onChange) onChange({ value, selected: event.currentTarget.checked })\n parentOnChange({ value, selected: event.currentTarget.checked })\n },\n [onChange, parentOnChange, value]\n )\n\n return (\n <MultiSelectRoot aria-disabled={isDisabled}>\n <MultiSelectInput\n {...{\n name,\n value,\n hasError,\n }}\n checked={isSelected}\n disabled={isDisabled}\n onChange={handleChange}\n overlay={variant === 'overlay'}\n aria-invalid={hasError}\n />\n <MultiSelectInputOverlay\n overlay={variant === 'overlay'}\n hasError={hasError}\n aria-hidden={true}\n >\n <pixiv-icon name=\"24/Check\" unsafe-non-guideline-scale={16 / 24} />\n </MultiSelectInputOverlay>\n {Boolean(children) && <MultiSelectLabel>{children}</MultiSelectLabel>}\n </MultiSelectRoot>\n )\n}\n\nconst MultiSelectRoot = styled.label`\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: center;\n position: relative;\n cursor: pointer;\n ${disabledSelector} {\n cursor: default;\n }\n gap: ${({ theme }) => px(theme.spacing[4])};\n ${theme((o) => o.disabled)}\n`\n\nconst MultiSelectLabel = styled.div`\n display: flex;\n align-items: center;\n ${theme((o) => [o.typography(14), o.font.text1])}\n`\n\nconst MultiSelectInput = styled.input.attrs({ type: 'checkbox' })<{\n hasError: boolean\n overlay: boolean\n}>`\n &[type='checkbox'] {\n appearance: none;\n display: block;\n width: 20px;\n height: 20px;\n margin: 0;\n\n &:checked {\n ${theme((o) => o.bg.brand.hover.press)}\n }\n\n ${({ hasError, overlay }) =>\n theme((o) => [\n o.bg.text3.hover.press,\n o.borderRadius('oval'),\n hasError && !overlay && o.outline.assertive,\n overlay && o.bg.surface4,\n ])};\n }\n`\n\nconst MultiSelectInputOverlay = styled.div<{\n overlay: boolean\n hasError: boolean\n}>`\n position: absolute;\n top: -2px;\n left: -2px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ${({ hasError, overlay }) =>\n theme((o) => [\n o.width.px(24),\n o.height.px(24),\n o.borderRadius('oval'),\n o.font.text5,\n hasError && overlay && o.outline.assertive,\n ])}\n\n ${({ overlay }) =>\n overlay &&\n css`\n border-color: ${({ theme }) => theme.color.text5};\n border-width: 2px;\n border-style: solid;\n `}\n`\n\nexport type MultiSelectGroupProps = React.PropsWithChildren<{\n className?: string\n name: string\n ariaLabel: string\n selected: string[]\n onChange: (selected: string[]) => void\n disabled?: boolean\n readonly?: boolean\n hasError?: boolean\n}>\n\nexport function MultiSelectGroup({\n className,\n name,\n ariaLabel,\n selected,\n onChange,\n disabled = false,\n readonly = false,\n hasError = false,\n children,\n}: MultiSelectGroupProps) {\n const handleChange = useCallback(\n (payload: { value: string; selected: boolean }) => {\n const index = selected.indexOf(payload.value)\n\n if (payload.selected) {\n if (index < 0) {\n onChange([...selected, payload.value])\n }\n } else {\n if (index >= 0) {\n onChange([...selected.slice(0, index), ...selected.slice(index + 1)])\n }\n }\n },\n [onChange, selected]\n )\n\n return (\n <MultiSelectGroupContext.Provider\n value={{\n name,\n selected: Array.from(new Set(selected)),\n disabled,\n readonly,\n hasError,\n onChange: handleChange,\n }}\n >\n <div\n className={className}\n aria-label={ariaLabel}\n data-testid=\"SelectGroup\"\n >\n {children}\n </div>\n </MultiSelectGroupContext.Provider>\n )\n}\n","import { useSwitch } from '@react-aria/switch'\nimport type { AriaSwitchProps } from '@react-types/switch'\nimport React, { useRef, useMemo } from 'react'\nimport { useToggleState } from 'react-stately'\nimport styled from 'styled-components'\nimport { theme } from '../../styled'\nimport { disabledSelector, px } from '@charcoal-ui/utils'\n\nexport type SwitchProps = {\n name: string\n className?: string\n value?: string\n checked?: boolean\n disabled?: boolean\n onChange(checked: boolean): void\n} & (\n | // children か label は片方が必須\n {\n children: React.ReactNode\n }\n | {\n label: string\n }\n)\n\nexport default function SwitchCheckbox(props: SwitchProps) {\n const { disabled, className } = props\n\n const ariaSwitchProps: AriaSwitchProps = useMemo(\n () => ({\n ...props,\n\n // children がいない場合は aria-label をつけないといけない\n 'aria-label': 'children' in props ? undefined : props.label,\n isDisabled: props.disabled,\n isSelected: props.checked,\n }),\n [props]\n )\n\n const state = useToggleState(ariaSwitchProps)\n const ref = useRef<HTMLInputElement>(null)\n const {\n inputProps: { className: _className, type: _type, ...rest },\n } = useSwitch(ariaSwitchProps, state, ref)\n\n return (\n <Label className={className} aria-disabled={disabled}>\n <SwitchInput {...rest} ref={ref} />\n {'children' in props ? (\n // eslint-disable-next-line react/destructuring-assignment\n <LabelInner>{props.children}</LabelInner>\n ) : undefined}\n </Label>\n )\n}\n\nconst Label = styled.label`\n display: inline-grid;\n grid-template-columns: auto 1fr;\n gap: ${({ theme }) => px(theme.spacing[4])};\n cursor: pointer;\n outline: 0;\n\n ${theme((o) => o.disabled)}\n\n ${disabledSelector} {\n cursor: default;\n }\n`\n\nconst LabelInner = styled.div`\n ${theme((o) => o.typography(14))}\n`\n\nconst SwitchInput = styled.input.attrs({\n type: 'checkbox',\n})`\n &[type='checkbox'] {\n appearance: none;\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n width: 28px;\n border: 2px solid transparent;\n transition: box-shadow 0.2s, background-color 0.2s;\n cursor: inherit;\n ${theme((o) => [\n o.borderRadius(16),\n o.height.px(16),\n o.bg.text4.hover.press,\n o.outline.default.focus,\n ])}\n\n &::after {\n content: '';\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n width: 12px;\n height: 12px;\n transform: translateX(0);\n transition: transform 0.2s;\n ${theme((o) => [o.bg.text5.hover.press, o.borderRadius('oval')])}\n }\n\n &:checked {\n ${theme((o) => o.bg.brand.hover.press)}\n\n &::after {\n transform: translateX(12px);\n }\n }\n }\n`\n","import React from 'react'\nimport styled from 'styled-components'\nimport { createTheme } from '@charcoal-ui/styled'\n\nexport interface FieldLabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement> {\n readonly className?: string\n readonly label: string\n readonly subLabel?: React.ReactNode\n readonly required?: boolean\n // TODO: 翻訳用のContextで注入する\n readonly requiredText?: string\n}\n\nconst FieldLabel = React.forwardRef<HTMLLabelElement, FieldLabelProps>(\n function FieldLabel(\n {\n style,\n className,\n label,\n required = false,\n requiredText,\n subLabel,\n ...labelProps\n },\n ref\n ) {\n return (\n <FieldLabelWrapper style={style} className={className}>\n <Label ref={ref} {...labelProps}>\n {label}\n </Label>\n {required && <RequiredText>{requiredText}</RequiredText>}\n <SubLabelClickable>\n <span>{subLabel}</span>\n </SubLabelClickable>\n </FieldLabelWrapper>\n )\n }\n)\n\nexport default FieldLabel\n\nconst theme = createTheme(styled)\n\nconst Label = styled.label`\n ${theme((o) => [o.typography(14).bold, o.font.text1])}\n`\n\nconst RequiredText = styled.span`\n ${theme((o) => [o.typography(14), o.font.text3])}\n`\n\nconst SubLabelClickable = styled.div`\n ${theme((o) => [\n o.typography(14),\n o.font.text3.hover.press,\n o.outline.default.focus,\n ])}\n`\n\nconst FieldLabelWrapper = styled.div`\n display: inline-flex;\n align-items: center;\n\n > ${RequiredText} {\n ${theme((o) => o.margin.left(4))}\n }\n\n > ${SubLabelClickable} {\n ${theme((o) => o.margin.left('auto'))}\n }\n`\n","import { useTextField } from '@react-aria/textfield'\nimport { useVisuallyHidden } from '@react-aria/visually-hidden'\nimport React, {\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport styled, { css } from 'styled-components'\nimport FieldLabel, { FieldLabelProps } from '../FieldLabel'\nimport { createTheme } from '@charcoal-ui/styled'\n\nconst theme = createTheme(styled)\n\ninterface TextFieldBaseProps\n extends Pick<FieldLabelProps, 'label' | 'requiredText' | 'subLabel'> {\n readonly className?: string\n readonly defaultValue?: string\n readonly value?: string\n readonly onChange?: (value: string) => void\n readonly onKeyDown?: (event: React.KeyboardEvent<Element>) => void\n readonly onFocus?: (event: React.FocusEvent<Element>) => void\n readonly onBlur?: (event: React.FocusEvent<Element>) => void\n readonly showCount?: boolean\n readonly showLabel?: boolean\n readonly placeholder?: string\n readonly assistiveText?: string\n readonly disabled?: boolean\n readonly required?: boolean\n readonly invalid?: boolean\n readonly maxLength?: number\n /**\n * tab-indexがー1かどうか\n */\n readonly excludeFromTabOrder?: boolean\n}\n\nexport interface SingleLineTextFieldProps extends TextFieldBaseProps {\n readonly autoHeight?: never\n readonly multiline?: false\n readonly rows?: never\n readonly type?: string\n readonly prefix?: ReactNode\n readonly suffix?: ReactNode\n}\n\nexport interface MultiLineTextFieldProps extends TextFieldBaseProps {\n readonly autoHeight?: boolean\n readonly multiline: true\n readonly rows?: number\n readonly type?: never\n readonly prefix?: never\n readonly suffix?: never\n}\n\nexport type TextFieldProps = SingleLineTextFieldProps | MultiLineTextFieldProps\ntype TextFieldElement = HTMLInputElement & HTMLTextAreaElement\n\nfunction mergeRefs<T>(...refs: React.Ref<T>[]): React.RefCallback<T> {\n return (value) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(value)\n } else if (ref !== null) {\n ;(ref as React.MutableRefObject<T | null>).current = value\n }\n }\n }\n}\n\nfunction countCodePointsInString(string: string) {\n // [...string] とするとproduction buildで動かなくなる\n // cf. https://twitter.com/f_subal/status/1497214727511891972\n return Array.from(string).length\n}\n\nconst TextField = React.forwardRef<TextFieldElement, TextFieldProps>(\n function TextField(props, ref) {\n return props.multiline !== undefined && props.multiline ? (\n <MultiLineTextField ref={ref} {...props} />\n ) : (\n <SingleLineTextField ref={ref} {...props} />\n )\n }\n)\n\nexport default TextField\n\nconst SingleLineTextField = React.forwardRef<\n HTMLInputElement,\n SingleLineTextFieldProps\n>(function SingleLineTextFieldInner({ onChange, ...props }, forwardRef) {\n const {\n className,\n showLabel = false,\n showCount = false,\n label,\n requiredText,\n subLabel,\n disabled = false,\n required,\n invalid = false,\n assistiveText,\n maxLength,\n prefix = null,\n suffix = null,\n } = props\n\n const { visuallyHiddenProps } = useVisuallyHidden()\n const ariaRef = useRef<HTMLInputElement>(null)\n const prefixRef = useRef<HTMLSpanElement>(null)\n const suffixRef = useRef<HTMLSpanElement>(null)\n const [count, setCount] = useState(countCodePointsInString(props.value ?? ''))\n const [prefixWidth, setPrefixWidth] = useState(0)\n const [suffixWidth, setSuffixWidth] = useState(0)\n\n const nonControlled = props.value === undefined\n const handleChange = useCallback(\n (value: string) => {\n const count = countCodePointsInString(value)\n if (maxLength !== undefined && count > maxLength) {\n return\n }\n if (nonControlled) {\n setCount(count)\n }\n onChange?.(value)\n },\n [maxLength, nonControlled, onChange]\n )\n\n useEffect(() => {\n setCount(countCodePointsInString(props.value ?? ''))\n }, [props.value])\n\n const { inputProps, labelProps, descriptionProps, errorMessageProps } =\n useTextField(\n {\n inputElementType: 'input',\n isDisabled: disabled,\n isRequired: required,\n validationState: invalid ? 'invalid' : 'valid',\n description: !invalid && assistiveText,\n errorMessage: invalid && assistiveText,\n onChange: handleChange,\n ...props,\n },\n ariaRef\n )\n\n useEffect(() => {\n const prefixObserver = new ResizeObserver((entries) => {\n setPrefixWidth(entries[0].contentRect.width)\n })\n const suffixObserver = new ResizeObserver((entries) => {\n setSuffixWidth(entries[0].contentRect.width)\n })\n\n if (prefixRef.current !== null) {\n prefixObserver.observe(prefixRef.current)\n }\n if (suffixRef.current !== null) {\n suffixObserver.observe(suffixRef.current)\n }\n\n return () => {\n suffixObserver.disconnect()\n prefixObserver.disconnect()\n }\n }, [])\n\n return (\n <TextFieldRoot className={className} isDisabled={disabled}>\n <TextFieldLabel\n label={label}\n requiredText={requiredText}\n required={required}\n subLabel={subLabel}\n {...labelProps}\n {...(!showLabel ? visuallyHiddenProps : {})}\n />\n <StyledInputContainer>\n <PrefixContainer ref={prefixRef}>\n <Affix>{prefix}</Affix>\n </PrefixContainer>\n <StyledInput\n ref={mergeRefs(forwardRef, ariaRef)}\n invalid={invalid}\n extraLeftPadding={prefixWidth}\n extraRightPadding={suffixWidth}\n {...inputProps}\n />\n <SuffixContainer ref={suffixRef}>\n <Affix>{suffix}</Affix>\n {showCount && (\n <SingleLineCounter>\n {maxLength !== undefined ? `${count}/${maxLength}` : count}\n </SingleLineCounter>\n )}\n </SuffixContainer>\n </StyledInputContainer>\n {assistiveText != null && assistiveText.length !== 0 && (\n <AssistiveText\n invalid={invalid}\n {...(invalid ? errorMessageProps : descriptionProps)}\n >\n {assistiveText}\n </AssistiveText>\n )}\n </TextFieldRoot>\n )\n})\n\nconst MultiLineTextField = React.forwardRef<\n HTMLTextAreaElement,\n MultiLineTextFieldProps\n>(function MultiLineTextFieldInner({ onChange, ...props }, forwardRef) {\n const {\n className,\n showCount = false,\n showLabel = false,\n label,\n requiredText,\n subLabel,\n disabled = false,\n required,\n invalid = false,\n assistiveText,\n maxLength,\n autoHeight = false,\n rows: initialRows = 4,\n } = props\n\n const { visuallyHiddenProps } = useVisuallyHidden()\n const textareaRef = useRef<HTMLTextAreaElement>(null)\n const ariaRef = useRef<HTMLTextAreaElement>(null)\n const [count, setCount] = useState(countCodePointsInString(props.value ?? ''))\n const [rows, setRows] = useState(initialRows)\n\n const syncHeight = useCallback(\n (textarea: HTMLTextAreaElement) => {\n const rows = (`${textarea.value}\\n`.match(/\\n/gu)?.length ?? 0) || 1\n setRows(initialRows <= rows ? rows : initialRows)\n },\n [initialRows]\n )\n\n const nonControlled = props.value === undefined\n const handleChange = useCallback(\n (value: string) => {\n const count = countCodePointsInString(value)\n if (maxLength !== undefined && count > maxLength) {\n return\n }\n if (nonControlled) {\n setCount(count)\n }\n if (autoHeight && textareaRef.current !== null) {\n syncHeight(textareaRef.current)\n }\n onChange?.(value)\n },\n [autoHeight, maxLength, nonControlled, onChange, syncHeight]\n )\n\n useEffect(() => {\n setCount(countCodePointsInString(props.value ?? ''))\n }, [props.value])\n\n const { inputProps, labelProps, descriptionProps, errorMessageProps } =\n useTextField(\n {\n inputElementType: 'textarea',\n isDisabled: disabled,\n isRequired: required,\n validationState: invalid ? 'invalid' : 'valid',\n description: !invalid && assistiveText,\n errorMessage: invalid && assistiveText,\n onChange: handleChange,\n ...props,\n },\n ariaRef\n )\n\n useEffect(() => {\n if (autoHeight && textareaRef.current !== null) {\n syncHeight(textareaRef.current)\n }\n }, [autoHeight, syncHeight])\n\n return (\n <TextFieldRoot className={className} isDisabled={disabled}>\n <TextFieldLabel\n label={label}\n requiredText={requiredText}\n required={required}\n subLabel={subLabel}\n {...labelProps}\n {...(!showLabel ? visuallyHiddenProps : {})}\n />\n <StyledTextareaContainer\n invalid={invalid}\n rows={showCount ? rows + 1 : rows}\n >\n <StyledTextarea\n ref={mergeRefs(textareaRef, forwardRef, ariaRef)}\n rows={rows}\n noBottomPadding={showCount}\n {...inputProps}\n />\n {showCount && (\n <MultiLineCounter>\n {maxLength !== undefined ? `${count}/${maxLength}` : count}\n </MultiLineCounter>\n )}\n </StyledTextareaContainer>\n {assistiveText != null && assistiveText.length !== 0 && (\n <AssistiveText\n invalid={invalid}\n {...(invalid ? errorMessageProps : descriptionProps)}\n >\n {assistiveText}\n </AssistiveText>\n )}\n </TextFieldRoot>\n )\n})\n\nconst TextFieldRoot = styled.div<{ isDisabled: boolean }>`\n display: flex;\n flex-direction: column;\n\n ${(p) => p.isDisabled && { opacity: p.theme.elementEffect.disabled.opacity }}\n`\n\nconst TextFieldLabel = styled(FieldLabel)`\n ${theme((o) => o.margin.bottom(8))}\n`\n\nconst StyledInputContainer = styled.div`\n height: 40px;\n display: grid;\n position: relative;\n`\n\nconst PrefixContainer = styled.span`\n position: absolute;\n top: 50%;\n left: 8px;\n transform: translateY(-50%);\n`\n\nconst SuffixContainer = styled.span`\n position: absolute;\n top: 50%;\n right: 8px;\n transform: translateY(-50%);\n\n display: flex;\n gap: 8px;\n`\n\nconst Affix = styled.span`\n user-select: none;\n\n ${theme((o) => [o.typography(14).preserveHalfLeading, o.font.text2])}\n`\n\nconst StyledInput = styled.input<{\n invalid: boolean\n extraLeftPadding: number\n extraRightPadding: number\n}>`\n border: none;\n box-sizing: border-box;\n outline: none;\n font-family: inherit;\n\n /* Prevent zooming for iOS Safari */\n transform-origin: top left;\n transform: scale(0.875);\n width: calc(100% / 0.875);\n height: calc(100% / 0.875);\n font-size: calc(14px / 0.875);\n line-height: calc(22px / 0.875);\n padding-left: calc((8px + ${(p) => p.extraLeftPadding}px) / 0.875);\n padding-right: calc((8px + ${(p) => p.extraRightPadding}px) / 0.875);\n border-radius: calc(4px / 0.875);\n\n /* Display box-shadow for iOS Safari */\n appearance: none;\n\n ${(p) =>\n theme((o) => [\n o.bg.surface3.hover,\n o.outline.default.focus,\n p.invalid && o.outline.assertive,\n o.font.text2,\n ])}\n\n &::placeholder {\n ${theme((o) => o.font.text3)}\n }\n`\n\nconst StyledTextareaContainer = styled.div<{ rows: number; invalid: boolean }>`\n position: relative;\n overflow: hidden;\n padding: 0 8px;\n\n ${(p) =>\n theme((o) => [\n o.bg.surface3.hover,\n p.invalid && o.outline.assertive,\n o.font.text2,\n o.borderRadius(4),\n ])}\n\n &:focus-within {\n ${(p) =>\n theme((o) => (p.invalid ? o.outline.assertive : o.outline.default))}\n }\n\n ${({ rows }) => css`\n height: calc(22px * ${rows} + 18px);\n `};\n`\n\nconst StyledTextarea = styled.textarea<{ noBottomPadding: boolean }>`\n border: none;\n outline: none;\n resize: none;\n font-family: inherit;\n color: inherit;\n\n /* Prevent zooming for iOS Safari */\n transform-origin: top left;\n transform: scale(0.875);\n width: calc(100% / 0.875);\n font-size: calc(14px / 0.875);\n line-height: calc(22px / 0.875);\n padding: calc(9px / 0.875) 0 ${(p) => (p.noBottomPadding ? 0 : '')};\n\n ${({ rows = 1 }) => css`\n height: calc(22px / 0.875 * ${rows});\n `};\n\n /* Display box-shadow for iOS Safari */\n appearance: none;\n\n background: none;\n\n &::placeholder {\n ${theme((o) => o.font.text3)}\n }\n\n /* Hide scrollbar for Chrome, Safari and Opera */\n &::-webkit-scrollbar {\n display: none;\n }\n /* Hide scrollbar for IE, Edge and Firefox */\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n`\n\nconst SingleLineCounter = styled.span`\n ${theme((o) => [o.typography(14).preserveHalfLeading, o.font.text3])}\n`\n\nconst MultiLineCounter = styled.span`\n position: absolute;\n bottom: 9px;\n right: 8px;\n\n ${theme((o) => [o.typography(14).preserveHalfLeading, o.font.text3])}\n`\n\nconst AssistiveText = styled.p<{ invalid: boolean }>`\n ${(p) =>\n theme((o) => [\n o.typography(14),\n o.margin.top(8),\n o.margin.bottom(0),\n o.font[p.invalid ? 'assertive' : 'text1'],\n ])}\n`\n","import React from 'react'\n\nimport '@charcoal-ui/icons'\nimport type { PixivIcon, Props } from '@charcoal-ui/icons'\n\nexport interface OwnProps {\n unsafeNonGuidelineScale?: number\n className?: string\n}\n\nexport interface IconProps\n extends OwnProps,\n React.PropsWithoutRef<\n Omit<Props, 'class' | 'unsafe-non-guideline-scale' | 'css'>\n > {}\n\nconst Icon = React.forwardRef<PixivIcon, IconProps>(function IconInner(\n { name, scale, unsafeNonGuidelineScale, className, ...rest },\n ref\n) {\n return (\n <pixiv-icon\n ref={ref}\n name={name}\n scale={scale}\n unsafe-non-guideline-scale={unsafeNonGuidelineScale}\n class={className}\n {...rest}\n />\n )\n})\n\nexport default Icon\n","import React, { useContext, useRef } from 'react'\nimport {\n OverlayContainer,\n OverlayProps,\n useModal,\n useOverlay,\n usePreventScroll,\n} from '@react-aria/overlays'\nimport styled, { css, useTheme } from 'styled-components'\nimport { theme } from '../../styled'\nimport { FocusScope } from '@react-aria/focus'\nimport { useDialog } from '@react-aria/dialog'\nimport { AriaDialogProps } from '@react-types/dialog'\nimport { columnSystem, COLUMN_UNIT, GUTTER_UNIT } from '@charcoal-ui/foundation'\nimport { unreachable } from '../../_lib'\nimport { maxWidth } from '@charcoal-ui/utils'\nimport { useMedia } from '@charcoal-ui/styled'\nimport { animated, useTransition, easings } from 'react-spring'\nimport Button, { ButtonProps } from '../Button'\nimport IconButton from '../IconButton'\n\nexport type ModalProps = OverlayProps &\n AriaDialogProps & {\n children: React.ReactNode\n zIndex?: number\n title: string\n size?: 'S' | 'M' | 'L'\n bottomSheet?: boolean | 'full'\n\n // NOTICE: デフォルト値を与えてはならない\n // (たとえば document.body をデフォルト値にすると SSR できなくなる)\n portalContainer?: HTMLElement\n }\n\nconst DEFAULT_Z_INDEX = 10\n\nexport default function Modal({\n children,\n zIndex = DEFAULT_Z_INDEX,\n portalContainer,\n ...props\n}: ModalProps) {\n const {\n title,\n size = 'M',\n bottomSheet = false,\n isDismissable,\n onClose,\n isOpen = false,\n } = props\n\n const ref = useRef<HTMLDivElement>(null)\n const { overlayProps, underlayProps } = useOverlay(props, ref)\n\n usePreventScroll()\n const { modalProps } = useModal()\n\n const { dialogProps, titleProps } = useDialog(props, ref)\n\n const theme = useTheme()\n const isMobile = useMedia(maxWidth(theme.breakpoint.screen1)) ?? false\n const transitionEnabled = isMobile && bottomSheet !== false\n const transition = useTransition(isOpen, {\n from: {\n transform: 'translateY(100%)',\n backgroundColor: 'rgba(0, 0, 0, 0)',\n },\n enter: {\n transform: 'translateY(0%)',\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n },\n leave: {\n transform: 'translateY(100%)',\n backgroundColor: 'rgba(0, 0, 0, 0)',\n },\n config: transitionEnabled\n ? { duration: 400, easing: easings.easeOutQuart }\n : { duration: 0 },\n })\n const showDismiss = !isMobile || bottomSheet !== true\n\n return transition(\n ({ backgroundColor, transform }, item) =>\n item && (\n <OverlayContainer portalContainer={portalContainer}>\n <ModalBackground\n zIndex={zIndex}\n {...underlayProps}\n style={transitionEnabled ? { backgroundColor } : {}}\n >\n <FocusScope contain restoreFocus autoFocus>\n <ModalDialog\n ref={ref}\n {...overlayProps}\n {...modalProps}\n {...dialogProps}\n style={transitionEnabled ? { transform } : {}}\n size={size}\n bottomSheet={bottomSheet}\n >\n <ModalContext.Provider\n value={{ titleProps, title, close: onClose, showDismiss }}\n >\n {children}\n {isDismissable === true && (\n <ModalCrossButton\n size=\"S\"\n icon=\"24/Close\"\n onClick={onClose}\n />\n )}\n </ModalContext.Provider>\n </ModalDialog>\n </FocusScope>\n </ModalBackground>\n </OverlayContainer>\n )\n )\n}\n\nconst ModalContext = React.createContext<{\n titleProps: React.HTMLAttributes<HTMLElement>\n title: string\n close?: () => void\n showDismiss: boolean\n}>({\n titleProps: {},\n title: '',\n close: undefined,\n showDismiss: true,\n})\n\nconst ModalBackground = animated(styled.div<{ zIndex: number }>`\n z-index: ${({ zIndex }) => zIndex};\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n ${theme((o) => [o.bg.surface4])}\n`)\n\nconst ModalDialog = animated(styled.div<{\n size: 'S' | 'M' | 'L'\n bottomSheet: boolean | 'full'\n}>`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: ${(p) =>\n p.size === 'S'\n ? columnSystem(3, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2\n : p.size === 'M'\n ? columnSystem(4, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2\n : // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n p.size === 'L'\n ? columnSystem(6, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2\n : unreachable(p.size)}px;\n\n ${theme((o) => [o.bg.background1, o.borderRadius(24)])}\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n ${(p) =>\n p.bottomSheet === 'full'\n ? css`\n top: auto;\n bottom: 0;\n left: 0;\n transform: none;\n border-radius: 0;\n width: 100%;\n height: 100%;\n `\n : p.bottomSheet\n ? css`\n top: auto;\n bottom: 0;\n left: 0;\n transform: none;\n border-radius: 0;\n width: 100%;\n `\n : css`\n width: calc(100% - 48px);\n `}\n }\n`)\n\nconst ModalCrossButton = styled(IconButton)`\n position: absolute;\n top: 8px;\n right: 8px;\n\n ${theme((o) => [o.font.text3.hover.press])}\n`\n\nexport function ModalTitle(props: React.HTMLAttributes<HTMLHeadingElement>) {\n const { titleProps, title } = useContext(ModalContext)\n return (\n <ModalHeading {...titleProps} {...props}>\n {title}\n </ModalHeading>\n )\n}\n\nconst ModalHeading = styled.h3`\n margin: 0;\n font-weight: inherit;\n font-size: inherit;\n`\n\nexport function ModalDismissButton({ children, ...props }: ButtonProps) {\n const { close, showDismiss } = useContext(ModalContext)\n\n if (!showDismiss) {\n return null\n }\n\n return (\n <Button {...props} onClick={close} fixed>\n {children}\n </Button>\n )\n}\n","import React from 'react'\nimport { ModalTitle } from '.'\nimport styled from 'styled-components'\nimport { theme } from '../../styled'\nimport { maxWidth } from '@charcoal-ui/utils'\n\nexport function ModalHeader() {\n return (\n <ModalHeaderRoot>\n <StyledModalTitle />\n </ModalHeaderRoot>\n )\n}\n\nconst ModalHeaderRoot = styled.div`\n height: 64px;\n display: grid;\n align-content: center;\n justify-content: center;\n`\n\nconst StyledModalTitle = styled(ModalTitle)`\n ${theme((o) => [o.font.text1, o.typography(16).bold])}\n`\n\nexport const ModalAlign = styled.div`\n ${theme((o) => [o.padding.horizontal(24)])}\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n ${theme((o) => [o.padding.horizontal(16)])}\n }\n`\n\nexport const ModalBody = styled.div`\n ${theme((o) => [o.padding.bottom(40)])}\n`\n\nexport const ModalButtons = styled.div`\n display: grid;\n grid-auto-flow: row;\n grid-row-gap: 8px;\n ${theme((o) => [o.padding.horizontal(24).top(16)])}\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n ${theme((o) => [o.padding.horizontal(16)])}\n }\n`\n","import { transparentize } from 'polished'\nimport React, { useImperativeHandle, useRef } from 'react'\nimport styled, { keyframes } from 'styled-components'\n\nexport default function LoadingSpinner({\n size = 48,\n padding = 16,\n transparent = false,\n}) {\n return (\n <LoadingSpinnerRoot size={size} padding={padding} transparent={transparent}>\n <LoadingSpinnerIcon />\n </LoadingSpinnerRoot>\n )\n}\n\nconst LoadingSpinnerRoot = styled.div.attrs({ role: 'progressbar' })<{\n size: number\n padding: number\n transparent: boolean\n}>`\n margin: auto;\n padding: ${(props) => props.padding}px;\n border-radius: 8px;\n font-size: ${(props) => props.size}px;\n width: ${(props) => props.size}px;\n height: ${(props) => props.size}px;\n background-color: ${({ theme, transparent }) =>\n transparent\n ? 'transparent'\n : transparentize(0.32, theme.color.background1)};\n color: ${({ theme }) => theme.color.text4};\n`\n\nconst scaleout = keyframes`\n from {\n transform: scale(0);\n opacity: 1;\n }\n\n to {\n transform: scale(1);\n opacity: 0;\n }\n`\n\nconst Icon = styled.div.attrs({ role: 'presentation' })<{ once: boolean }>`\n width: 1em;\n height: 1em;\n border-radius: 1em;\n background-color: currentColor;\n animation: ${scaleout} 1s both ease-out;\n animation-iteration-count: ${(p) => (p.once ? 1 : 'infinite')};\n\n &[data-reset-animation] {\n animation: none;\n }\n`\n\ninterface Props {\n once?: boolean\n}\n\nexport interface LoadingSpinnerIconHandler {\n restart(): void\n}\n\nexport const LoadingSpinnerIcon = React.forwardRef<\n LoadingSpinnerIconHandler,\n Props\n>(function LoadingSpinnerIcon({ once = false }, ref) {\n const iconRef = useRef<HTMLDivElement>(null)\n\n useImperativeHandle(ref, () => ({\n restart: () => {\n if (!iconRef.current) {\n return\n }\n iconRef.current.dataset.resetAnimation = 'true'\n // Force reflow hack!\n void iconRef.current.offsetWidth\n delete iconRef.current.dataset.resetAnimation\n },\n }))\n\n return <Icon ref={iconRef} once={once} />\n})\n","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","import {clamp as $4507461a1b870123$re_export$clamp, snapValueToStep as $4507461a1b870123$re_export$snapValueToStep} from \"@react-stately/utils\";\nimport $12uGp$react, {useState as $12uGp$useState, useRef as $12uGp$useRef, useCallback as $12uGp$useCallback, useEffect as $12uGp$useEffect} from \"react\";\nimport {useSSRSafeId as $12uGp$useSSRSafeId} from \"@react-aria/ssr\";\nimport $12uGp$clsx from \"clsx\";\n\n\n\nconst $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c = typeof window !== 'undefined' ? $12uGp$react.useLayoutEffect : ()=>{\n};\n\n\n\n\nlet $bdb11010cef70236$var$idsUpdaterMap = new Map();\nfunction $bdb11010cef70236$export$f680877a34711e37(defaultId) {\n let [value, setValue] = $12uGp$useState(defaultId);\n let nextId = $12uGp$useRef(null);\n let res = $12uGp$useSSRSafeId(value);\n let updateValue = $12uGp$useCallback((val)=>{\n nextId.current = val;\n }, []);\n $bdb11010cef70236$var$idsUpdaterMap.set(res, updateValue);\n $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c(()=>{\n let r = res;\n return ()=>{\n $bdb11010cef70236$var$idsUpdaterMap.delete(r);\n };\n }, [\n res\n ]);\n // This cannot cause an infinite loop because the ref is updated first.\n // eslint-disable-next-line\n $12uGp$useEffect(()=>{\n let newId = nextId.current;\n if (newId) {\n nextId.current = null;\n setValue(newId);\n }\n });\n return res;\n}\nfunction $bdb11010cef70236$export$cd8c9cb68f842629(idA, idB) {\n if (idA === idB) return idA;\n let setIdA = $bdb11010cef70236$var$idsUpdaterMap.get(idA);\n if (setIdA) {\n setIdA(idB);\n return idB;\n }\n let setIdB = $bdb11010cef70236$var$idsUpdaterMap.get(idB);\n if (setIdB) {\n setIdB(idA);\n return idA;\n }\n return idB;\n}\nfunction $bdb11010cef70236$export$b4cc09c592e8fdb8(depArray = []) {\n let id = $bdb11010cef70236$export$f680877a34711e37();\n let [resolvedId, setResolvedId] = $1dbecbe27a04f9af$export$14d238f342723f25(id);\n let updateId = $12uGp$useCallback(()=>{\n setResolvedId(function*() {\n yield id;\n yield document.getElementById(id) ? id : undefined;\n });\n }, [\n id,\n setResolvedId\n ]);\n $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c(updateId, [\n id,\n updateId,\n ...depArray\n ]);\n return resolvedId;\n}\n\n\nfunction $ff5963eb1fccf552$export$e08e3b67e392101e(...callbacks) {\n return (...args)=>{\n for (let callback of callbacks)if (typeof callback === 'function') callback(...args);\n };\n}\n\n\n\n\n\nfunction $3ef42575df84b30b$export$9d1611c77c2fe928(...args) {\n // Start with a base clone of the first argument. This is a lot faster than starting\n // with an empty object and adding properties as we go.\n let result = {\n ...args[0]\n };\n for(let i = 1; i < args.length; i++){\n let props = args[i];\n for(let key in props){\n let a = result[key];\n let b = props[key];\n // Chain events\n if (typeof a === 'function' && typeof b === 'function' && // This is a lot faster than a regex.\n key[0] === 'o' && key[1] === 'n' && key.charCodeAt(2) >= /* 'A' */ 65 && key.charCodeAt(2) <= /* 'Z' */ 90) result[key] = $ff5963eb1fccf552$export$e08e3b67e392101e(a, b);\n else if ((key === 'className' || key === 'UNSAFE_className') && typeof a === 'string' && typeof b === 'string') result[key] = $12uGp$clsx(a, b);\n else if (key === 'id' && a && b) result.id = $bdb11010cef70236$export$cd8c9cb68f842629(a, b);\n else result[key] = b !== undefined ? b : a;\n }\n }\n return result;\n}\n\n\nfunction $5dc95899b306f630$export$c9058316764c140e(...refs) {\n return (value)=>{\n for (let ref of refs){\n if (typeof ref === 'function') ref(value);\n else if (ref != null) ref.current = value;\n }\n };\n}\n\n\nconst $65484d02dcb7eb3e$var$DOMPropNames = new Set([\n 'id'\n]);\nconst $65484d02dcb7eb3e$var$labelablePropNames = new Set([\n 'aria-label',\n 'aria-labelledby',\n 'aria-describedby',\n 'aria-details'\n]);\nconst $65484d02dcb7eb3e$var$propRe = /^(data-.*)$/;\nfunction $65484d02dcb7eb3e$export$457c3d6518dd4c6f(props, opts = {\n}) {\n let { labelable: labelable , propNames: propNames } = opts;\n let filteredProps = {\n };\n for(const prop in props)if (Object.prototype.hasOwnProperty.call(props, prop) && ($65484d02dcb7eb3e$var$DOMPropNames.has(prop) || labelable && $65484d02dcb7eb3e$var$labelablePropNames.has(prop) || (propNames === null || propNames === void 0 ? void 0 : propNames.has(prop)) || $65484d02dcb7eb3e$var$propRe.test(prop))) filteredProps[prop] = props[prop];\n return filteredProps;\n}\n\n\nfunction $7215afc6de606d6b$export$de79e2c695e052f3(element) {\n if ($7215afc6de606d6b$var$supportsPreventScroll()) element.focus({\n preventScroll: true\n });\n else {\n let scrollableElements = $7215afc6de606d6b$var$getScrollableElements(element);\n element.focus();\n $7215afc6de606d6b$var$restoreScrollPosition(scrollableElements);\n }\n}\nlet $7215afc6de606d6b$var$supportsPreventScrollCached = null;\nfunction $7215afc6de606d6b$var$supportsPreventScroll() {\n if ($7215afc6de606d6b$var$supportsPreventScrollCached == null) {\n $7215afc6de606d6b$var$supportsPreventScrollCached = false;\n try {\n var focusElem = document.createElement('div');\n focusElem.focus({\n get preventScroll () {\n $7215afc6de606d6b$var$supportsPreventScrollCached = true;\n return true;\n }\n });\n } catch (e) {\n // Ignore\n }\n }\n return $7215afc6de606d6b$var$supportsPreventScrollCached;\n}\nfunction $7215afc6de606d6b$var$getScrollableElements(element) {\n var parent = element.parentNode;\n var scrollableElements = [];\n var rootScrollingElement = document.scrollingElement || document.documentElement;\n while(parent instanceof HTMLElement && parent !== rootScrollingElement){\n if (parent.offsetHeight < parent.scrollHeight || parent.offsetWidth < parent.scrollWidth) scrollableElements.push({\n element: parent,\n scrollTop: parent.scrollTop,\n scrollLeft: parent.scrollLeft\n });\n parent = parent.parentNode;\n }\n if (rootScrollingElement instanceof HTMLElement) scrollableElements.push({\n element: rootScrollingElement,\n scrollTop: rootScrollingElement.scrollTop,\n scrollLeft: rootScrollingElement.scrollLeft\n });\n return scrollableElements;\n}\nfunction $7215afc6de606d6b$var$restoreScrollPosition(scrollableElements) {\n for (let { element: element , scrollTop: scrollTop , scrollLeft: scrollLeft } of scrollableElements){\n element.scrollTop = scrollTop;\n element.scrollLeft = scrollLeft;\n }\n}\n\n\nfunction $ab71dadb03a6fb2e$export$622cea445a1c5b7d(element, reverse, orientation = 'horizontal') {\n let rect = element.getBoundingClientRect();\n if (reverse) return orientation === 'horizontal' ? rect.right : rect.bottom;\n return orientation === 'horizontal' ? rect.left : rect.top;\n}\n\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // We store a global list of elements that are currently transitioning,\n// mapped to a set of CSS properties that are transitioning for that element.\n// This is necessary rather than a simple count of transitions because of browser\n// bugs, e.g. Chrome sometimes fires both transitionend and transitioncancel rather\n// than one or the other. So we need to track what's actually transitioning so that\n// we can ignore these duplicate events.\nlet $bbed8b41f857bcc0$var$transitionsByElement = new Map();\n// A list of callbacks to call once there are no transitioning elements.\nlet $bbed8b41f857bcc0$var$transitionCallbacks = new Set();\nfunction $bbed8b41f857bcc0$var$setupGlobalEvents() {\n if (typeof window === 'undefined') return;\n let onTransitionStart = (e)=>{\n // Add the transitioning property to the list for this element.\n let transitions = $bbed8b41f857bcc0$var$transitionsByElement.get(e.target);\n if (!transitions) {\n transitions = new Set();\n $bbed8b41f857bcc0$var$transitionsByElement.set(e.target, transitions);\n // The transitioncancel event must be registered on the element itself, rather than as a global\n // event. This enables us to handle when the node is deleted from the document while it is transitioning.\n // In that case, the cancel event would have nowhere to bubble to so we need to handle it directly.\n e.target.addEventListener('transitioncancel', onTransitionEnd);\n }\n transitions.add(e.propertyName);\n };\n let onTransitionEnd = (e)=>{\n // Remove property from list of transitioning properties.\n let properties = $bbed8b41f857bcc0$var$transitionsByElement.get(e.target);\n if (!properties) return;\n properties.delete(e.propertyName);\n // If empty, remove transitioncancel event, and remove the element from the list of transitioning elements.\n if (properties.size === 0) {\n e.target.removeEventListener('transitioncancel', onTransitionEnd);\n $bbed8b41f857bcc0$var$transitionsByElement.delete(e.target);\n }\n // If no transitioning elements, call all of the queued callbacks.\n if ($bbed8b41f857bcc0$var$transitionsByElement.size === 0) {\n for (let cb of $bbed8b41f857bcc0$var$transitionCallbacks)cb();\n $bbed8b41f857bcc0$var$transitionCallbacks.clear();\n }\n };\n document.body.addEventListener('transitionrun', onTransitionStart);\n document.body.addEventListener('transitionend', onTransitionEnd);\n}\nif (typeof document !== 'undefined') {\n if (document.readyState !== 'loading') $bbed8b41f857bcc0$var$setupGlobalEvents();\n else document.addEventListener('DOMContentLoaded', $bbed8b41f857bcc0$var$setupGlobalEvents);\n}\nfunction $bbed8b41f857bcc0$export$24490316f764c430(fn) {\n // Wait one frame to see if an animation starts, e.g. a transition on mount.\n requestAnimationFrame(()=>{\n // If no transitions are running, call the function immediately.\n // Otherwise, add it to a list of callbacks to run at the end of the animation.\n if ($bbed8b41f857bcc0$var$transitionsByElement.size === 0) fn();\n else $bbed8b41f857bcc0$var$transitionCallbacks.add(fn);\n });\n}\n\n\n\n\n// Keep track of elements that we are currently handling dragging for via useDrag1D.\n// If there's an ancestor and a descendant both using useDrag1D(), and the user starts\n// dragging the descendant, we don't want useDrag1D events to fire for the ancestor.\nconst $9cc09df9fd7676be$var$draggingElements = [];\nfunction $9cc09df9fd7676be$export$7bbed75feba39706(props) {\n console.warn('useDrag1D is deprecated, please use `useMove` instead https://react-spectrum.adobe.com/react-aria/useMove.html');\n let { containerRef: containerRef , reverse: reverse , orientation: orientation , onHover: onHover , onDrag: onDrag , onPositionChange: onPositionChange , onIncrement: onIncrement , onDecrement: onDecrement , onIncrementToMax: onIncrementToMax , onDecrementToMin: onDecrementToMin , onCollapseToggle: onCollapseToggle } = props;\n let getPosition = (e)=>orientation === 'horizontal' ? e.clientX : e.clientY\n ;\n let getNextOffset = (e)=>{\n let containerOffset = $ab71dadb03a6fb2e$export$622cea445a1c5b7d(containerRef.current, reverse, orientation);\n let mouseOffset = getPosition(e);\n let nextOffset = reverse ? containerOffset - mouseOffset : mouseOffset - containerOffset;\n return nextOffset;\n };\n let dragging = $12uGp$useRef(false);\n let prevPosition = $12uGp$useRef(0);\n // Keep track of the current handlers in a ref so that the events can access them.\n let handlers = $12uGp$useRef({\n onPositionChange: onPositionChange,\n onDrag: onDrag\n });\n handlers.current.onDrag = onDrag;\n handlers.current.onPositionChange = onPositionChange;\n let onMouseDragged = (e)=>{\n e.preventDefault();\n let nextOffset = getNextOffset(e);\n if (!dragging.current) {\n dragging.current = true;\n if (handlers.current.onDrag) handlers.current.onDrag(true);\n if (handlers.current.onPositionChange) handlers.current.onPositionChange(nextOffset);\n }\n if (prevPosition.current === nextOffset) return;\n prevPosition.current = nextOffset;\n if (onPositionChange) onPositionChange(nextOffset);\n };\n let onMouseUp = (e)=>{\n const target = e.target;\n dragging.current = false;\n let nextOffset = getNextOffset(e);\n if (handlers.current.onDrag) handlers.current.onDrag(false);\n if (handlers.current.onPositionChange) handlers.current.onPositionChange(nextOffset);\n $9cc09df9fd7676be$var$draggingElements.splice($9cc09df9fd7676be$var$draggingElements.indexOf(target), 1);\n window.removeEventListener('mouseup', onMouseUp, false);\n window.removeEventListener('mousemove', onMouseDragged, false);\n };\n let onMouseDown = (e)=>{\n const target = e.currentTarget;\n // If we're already handling dragging on a descendant with useDrag1D, then\n // we don't want to handle the drag motion on this target as well.\n if ($9cc09df9fd7676be$var$draggingElements.some((elt)=>target.contains(elt)\n )) return;\n $9cc09df9fd7676be$var$draggingElements.push(target);\n window.addEventListener('mousemove', onMouseDragged, false);\n window.addEventListener('mouseup', onMouseUp, false);\n };\n let onMouseEnter = ()=>{\n if (onHover) onHover(true);\n };\n let onMouseOut = ()=>{\n if (onHover) onHover(false);\n };\n let onKeyDown = (e)=>{\n switch(e.key){\n case 'Left':\n case 'ArrowLeft':\n if (orientation === 'horizontal') {\n e.preventDefault();\n if (onDecrement && !reverse) onDecrement();\n else if (onIncrement && reverse) onIncrement();\n }\n break;\n case 'Up':\n case 'ArrowUp':\n if (orientation === 'vertical') {\n e.preventDefault();\n if (onDecrement && !reverse) onDecrement();\n else if (onIncrement && reverse) onIncrement();\n }\n break;\n case 'Right':\n case 'ArrowRight':\n if (orientation === 'horizontal') {\n e.preventDefault();\n if (onIncrement && !reverse) onIncrement();\n else if (onDecrement && reverse) onDecrement();\n }\n break;\n case 'Down':\n case 'ArrowDown':\n if (orientation === 'vertical') {\n e.preventDefault();\n if (onIncrement && !reverse) onIncrement();\n else if (onDecrement && reverse) onDecrement();\n }\n break;\n case 'Home':\n e.preventDefault();\n if (onDecrementToMin) onDecrementToMin();\n break;\n case 'End':\n e.preventDefault();\n if (onIncrementToMax) onIncrementToMax();\n break;\n case 'Enter':\n e.preventDefault();\n if (onCollapseToggle) onCollapseToggle();\n break;\n }\n };\n return {\n onMouseDown: onMouseDown,\n onMouseEnter: onMouseEnter,\n onMouseOut: onMouseOut,\n onKeyDown: onKeyDown\n };\n}\n\n\n\nfunction $03deb23ff14920c4$export$4eaf04e54aa8eed6() {\n let globalListeners = $12uGp$useRef(new Map());\n let addGlobalListener = $12uGp$useCallback((eventTarget, type, listener, options)=>{\n // Make sure we remove the listener after it is called with the `once` option.\n let fn = (options === null || options === void 0 ? void 0 : options.once) ? (...args)=>{\n globalListeners.current.delete(listener);\n listener(...args);\n } : listener;\n globalListeners.current.set(listener, {\n type: type,\n eventTarget: eventTarget,\n fn: fn,\n options: options\n });\n eventTarget.addEventListener(type, listener, options);\n }, []);\n let removeGlobalListener = $12uGp$useCallback((eventTarget, type, listener, options)=>{\n var ref;\n let fn = ((ref = globalListeners.current.get(listener)) === null || ref === void 0 ? void 0 : ref.fn) || listener;\n eventTarget.removeEventListener(type, fn, options);\n globalListeners.current.delete(listener);\n }, []);\n let removeAllGlobalListeners = $12uGp$useCallback(()=>{\n globalListeners.current.forEach((value, key)=>{\n removeGlobalListener(value.eventTarget, value.type, key, value.options);\n });\n }, [\n removeGlobalListener\n ]);\n // eslint-disable-next-line arrow-body-style\n $12uGp$useEffect(()=>{\n return removeAllGlobalListeners;\n }, [\n removeAllGlobalListeners\n ]);\n return {\n addGlobalListener: addGlobalListener,\n removeGlobalListener: removeGlobalListener,\n removeAllGlobalListeners: removeAllGlobalListeners\n };\n}\n\n\n\nfunction $313b98861ee5dd6c$export$d6875122194c7b44(props, defaultLabel) {\n let { id: id , 'aria-label': label , 'aria-labelledby': labelledBy } = props;\n // If there is both an aria-label and aria-labelledby,\n // combine them by pointing to the element itself.\n id = $bdb11010cef70236$export$f680877a34711e37(id);\n if (labelledBy && label) {\n let ids = new Set([\n ...labelledBy.trim().split(/\\s+/),\n id\n ]);\n labelledBy = [\n ...ids\n ].join(' ');\n } else if (labelledBy) labelledBy = labelledBy.trim().split(/\\s+/).join(' ');\n // If no labels are provided, use the default\n if (!label && !labelledBy && defaultLabel) label = defaultLabel;\n return {\n id: id,\n 'aria-label': label,\n 'aria-labelledby': labelledBy\n };\n}\n\n\n\n\nfunction $df56164dff5785e2$export$4338b53315abf666(forwardedRef) {\n const objRef = $12uGp$useRef();\n /**\n * We're using `useLayoutEffect` here instead of `useEffect` because we want\n * to make sure that the `ref` value is up to date before other places in the\n * the execution cycle try to read it.\n */ $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c(()=>{\n if (!forwardedRef) return;\n if (typeof forwardedRef === 'function') forwardedRef(objRef.current);\n else forwardedRef.current = objRef.current;\n }, [\n forwardedRef\n ]);\n return objRef;\n}\n\n\n\nfunction $4f58c5f72bcf79f7$export$496315a1608d9602(effect, dependencies) {\n const isInitialMount = $12uGp$useRef(true);\n $12uGp$useEffect(()=>{\n if (isInitialMount.current) isInitialMount.current = false;\n else effect();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, dependencies);\n}\n\n\n\n\nfunction $9daab02d461809db$var$hasResizeObserver() {\n return typeof window.ResizeObserver !== 'undefined';\n}\nfunction $9daab02d461809db$export$683480f191c0e3ea(options) {\n const { ref: ref , onResize: onResize } = options;\n $12uGp$useEffect(()=>{\n let element = ref === null || ref === void 0 ? void 0 : ref.current;\n if (!element) return;\n if (!$9daab02d461809db$var$hasResizeObserver()) {\n window.addEventListener('resize', onResize, false);\n return ()=>{\n window.removeEventListener('resize', onResize, false);\n };\n } else {\n const resizeObserverInstance = new window.ResizeObserver((entries)=>{\n if (!entries.length) return;\n onResize();\n });\n resizeObserverInstance.observe(element);\n return ()=>{\n if (element) resizeObserverInstance.unobserve(element);\n };\n }\n }, [\n onResize,\n ref\n ]);\n}\n\n\n\nfunction $e7801be82b4b2a53$export$4debdb1a3f0fa79e(context, ref) {\n $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c(()=>{\n if (context && context.ref && ref) {\n context.ref.current = ref.current;\n return ()=>{\n context.ref.current = null;\n };\n }\n }, [\n context,\n ref\n ]);\n}\n\n\nfunction $62d8ded9296f3872$export$cfa2225e87938781(node) {\n while(node && !$62d8ded9296f3872$var$isScrollable(node))node = node.parentElement;\n return node || document.scrollingElement || document.documentElement;\n}\nfunction $62d8ded9296f3872$var$isScrollable(node) {\n let style = window.getComputedStyle(node);\n return /(auto|scroll)/.test(style.overflow + style.overflowX + style.overflowY);\n}\n\n\n\n// @ts-ignore\nlet $5df64b3807dc15ee$var$visualViewport = typeof window !== 'undefined' && window.visualViewport;\nfunction $5df64b3807dc15ee$export$d699905dd57c73ca() {\n let [size1, setSize] = $12uGp$useState(()=>$5df64b3807dc15ee$var$getViewportSize()\n );\n $12uGp$useEffect(()=>{\n // Use visualViewport api to track available height even on iOS virtual keyboard opening\n let onResize = ()=>{\n setSize((size)=>{\n let newSize = $5df64b3807dc15ee$var$getViewportSize();\n if (newSize.width === size.width && newSize.height === size.height) return size;\n return newSize;\n });\n };\n if (!$5df64b3807dc15ee$var$visualViewport) window.addEventListener('resize', onResize);\n else $5df64b3807dc15ee$var$visualViewport.addEventListener('resize', onResize);\n return ()=>{\n if (!$5df64b3807dc15ee$var$visualViewport) window.removeEventListener('resize', onResize);\n else $5df64b3807dc15ee$var$visualViewport.removeEventListener('resize', onResize);\n };\n }, []);\n return size1;\n}\nfunction $5df64b3807dc15ee$var$getViewportSize() {\n return {\n width: ($5df64b3807dc15ee$var$visualViewport === null || $5df64b3807dc15ee$var$visualViewport === void 0 ? void 0 : $5df64b3807dc15ee$var$visualViewport.width) || window.innerWidth,\n height: ($5df64b3807dc15ee$var$visualViewport === null || $5df64b3807dc15ee$var$visualViewport === void 0 ? void 0 : $5df64b3807dc15ee$var$visualViewport.height) || window.innerHeight\n };\n}\n\n\n\n\nlet $ef06256079686ba0$var$descriptionId = 0;\nconst $ef06256079686ba0$var$descriptionNodes = new Map();\nfunction $ef06256079686ba0$export$f8aeda7b10753fa1(description) {\n let [id1, setId] = $12uGp$useState(undefined);\n $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c(()=>{\n if (!description) return;\n let desc = $ef06256079686ba0$var$descriptionNodes.get(description);\n if (!desc) {\n let id = `react-aria-description-${$ef06256079686ba0$var$descriptionId++}`;\n setId(id);\n let node = document.createElement('div');\n node.id = id;\n node.style.display = 'none';\n node.textContent = description;\n document.body.appendChild(node);\n desc = {\n refCount: 0,\n element: node\n };\n $ef06256079686ba0$var$descriptionNodes.set(description, desc);\n } else setId(desc.element.id);\n desc.refCount++;\n return ()=>{\n if (--desc.refCount === 0) {\n desc.element.remove();\n $ef06256079686ba0$var$descriptionNodes.delete(description);\n }\n };\n }, [\n description\n ]);\n return {\n 'aria-describedby': description ? id1 : undefined\n };\n}\n\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $c87311424ea30a05$var$testUserAgent(re) {\n var ref;\n if (typeof window === 'undefined' || window.navigator == null) return false;\n return ((ref = window.navigator['userAgentData']) === null || ref === void 0 ? void 0 : ref.brands.some((brand)=>re.test(brand.brand)\n )) || re.test(window.navigator.userAgent);\n}\nfunction $c87311424ea30a05$var$testPlatform(re) {\n var ref;\n return typeof window !== 'undefined' && window.navigator != null ? re.test(((ref = window.navigator['userAgentData']) === null || ref === void 0 ? void 0 : ref.platform) || window.navigator.platform) : false;\n}\nfunction $c87311424ea30a05$export$9ac100e40613ea10() {\n return $c87311424ea30a05$var$testPlatform(/^Mac/i);\n}\nfunction $c87311424ea30a05$export$186c6964ca17d99() {\n return $c87311424ea30a05$var$testPlatform(/^iPhone/i);\n}\nfunction $c87311424ea30a05$export$7bef049ce92e4224() {\n return $c87311424ea30a05$var$testPlatform(/^iPad/i) || $c87311424ea30a05$export$9ac100e40613ea10() && navigator.maxTouchPoints > 1;\n}\nfunction $c87311424ea30a05$export$fedb369cb70207f1() {\n return $c87311424ea30a05$export$186c6964ca17d99() || $c87311424ea30a05$export$7bef049ce92e4224();\n}\nfunction $c87311424ea30a05$export$e1865c3bedcd822b() {\n return $c87311424ea30a05$export$9ac100e40613ea10() || $c87311424ea30a05$export$fedb369cb70207f1();\n}\nfunction $c87311424ea30a05$export$78551043582a6a98() {\n return $c87311424ea30a05$var$testUserAgent(/AppleWebKit/i) && !$c87311424ea30a05$export$6446a186d09e379e();\n}\nfunction $c87311424ea30a05$export$6446a186d09e379e() {\n return $c87311424ea30a05$var$testUserAgent(/Chrome/i);\n}\nfunction $c87311424ea30a05$export$a11b0059900ceec8() {\n return $c87311424ea30a05$var$testUserAgent(/Android/i);\n}\n\n\n\nfunction $e9faafb641e167db$export$90fc3a17d93f704c(ref, event, handler1, options) {\n let handlerRef = $12uGp$useRef(handler1);\n handlerRef.current = handler1;\n let isDisabled = handler1 == null;\n $12uGp$useEffect(()=>{\n if (isDisabled) return;\n let element = ref.current;\n let handler = (e)=>handlerRef.current.call(this, e)\n ;\n element.addEventListener(event, handler, options);\n return ()=>{\n element.removeEventListener(event, handler, options);\n };\n }, [\n ref,\n event,\n options,\n isDisabled\n ]);\n}\n\n\n\n\nfunction $1dbecbe27a04f9af$export$14d238f342723f25(defaultValue) {\n let [value, setValue] = $12uGp$useState(defaultValue);\n let valueRef = $12uGp$useRef(value);\n let effect = $12uGp$useRef(null);\n valueRef.current = value;\n // Store the function in a ref so we can always access the current version\n // which has the proper `value` in scope.\n let nextRef = $12uGp$useRef(null);\n nextRef.current = ()=>{\n // Run the generator to the next yield.\n let newValue = effect.current.next();\n // If the generator is done, reset the effect.\n if (newValue.done) {\n effect.current = null;\n return;\n }\n // If the value is the same as the current value,\n // then continue to the next yield. Otherwise,\n // set the value in state and wait for the next layout effect.\n if (value === newValue.value) nextRef.current();\n else setValue(newValue.value);\n };\n $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c(()=>{\n // If there is an effect currently running, continue to the next yield.\n if (effect.current) nextRef.current();\n });\n let queue = $12uGp$useCallback((fn)=>{\n effect.current = fn(valueRef.current);\n nextRef.current();\n }, [\n effect,\n nextRef\n ]);\n return [\n value,\n queue\n ];\n}\n\n\nfunction $2f04cbc44ee30ce0$export$53a0910f038337bd(scrollView, element) {\n let offsetX = $2f04cbc44ee30ce0$var$relativeOffset(scrollView, element, 'left');\n let offsetY = $2f04cbc44ee30ce0$var$relativeOffset(scrollView, element, 'top');\n let width = element.offsetWidth;\n let height = element.offsetHeight;\n let x = scrollView.scrollLeft;\n let y = scrollView.scrollTop;\n let maxX = x + scrollView.offsetWidth;\n let maxY = y + scrollView.offsetHeight;\n if (offsetX <= x) x = offsetX;\n else if (offsetX + width > maxX) x += offsetX + width - maxX;\n if (offsetY <= y) y = offsetY;\n else if (offsetY + height > maxY) y += offsetY + height - maxY;\n scrollView.scrollLeft = x;\n scrollView.scrollTop = y;\n}\n/**\n * Computes the offset left or top from child to ancestor by accumulating\n * offsetLeft or offsetTop through intervening offsetParents.\n */ function $2f04cbc44ee30ce0$var$relativeOffset(ancestor, child, axis) {\n const prop = axis === 'left' ? 'offsetLeft' : 'offsetTop';\n let sum = 0;\n while(child.offsetParent){\n sum += child[prop];\n if (child.offsetParent === ancestor) break;\n else if (child.offsetParent.contains(ancestor)) {\n // If the ancestor is not `position:relative`, then we stop at\n // _its_ offset parent, and we subtract off _its_ offset, so that\n // we end up with the proper offset from child to ancestor.\n sum -= ancestor[prop];\n break;\n }\n child = child.offsetParent;\n }\n return sum;\n}\n\n\n\n\nfunction $6a7db85432448f7f$export$60278871457622de(event) {\n // JAWS/NVDA with Firefox.\n if (event.mozInputSource === 0 && event.isTrusted) return true;\n // Android TalkBack's detail value varies depending on the event listener providing the event so we have specific logic here instead\n // If pointerType is defined, event is from a click listener. For events from mousedown listener, detail === 0 is a sufficient check\n // to detect TalkBack virtual clicks.\n if ($c87311424ea30a05$export$a11b0059900ceec8() && event.pointerType) return event.type === 'click' && event.buttons === 1;\n return event.detail === 0 && !event.pointerType;\n}\nfunction $6a7db85432448f7f$export$29bf1b5f2c56cf63(event) {\n // If the pointer size is zero, then we assume it's from a screen reader.\n // Android TalkBack double tap will sometimes return a event with width and height of 1\n // and pointerType === 'mouse' so we need to check for a specific combination of event attributes.\n // Cannot use \"event.pressure === 0\" as the sole check due to Safari pointer events always returning pressure === 0\n // instead of .5, see https://bugs.webkit.org/show_bug.cgi?id=206216. event.pointerType === 'mouse' is to distingush\n // Talkback double tap from Windows Firefox touch screen press\n return event.width === 0 && event.height === 0 || event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse';\n}\n\n\n\n\nexport {$bdb11010cef70236$export$f680877a34711e37 as useId, $bdb11010cef70236$export$cd8c9cb68f842629 as mergeIds, $bdb11010cef70236$export$b4cc09c592e8fdb8 as useSlotId, $ff5963eb1fccf552$export$e08e3b67e392101e as chain, $3ef42575df84b30b$export$9d1611c77c2fe928 as mergeProps, $5dc95899b306f630$export$c9058316764c140e as mergeRefs, $65484d02dcb7eb3e$export$457c3d6518dd4c6f as filterDOMProps, $7215afc6de606d6b$export$de79e2c695e052f3 as focusWithoutScrolling, $ab71dadb03a6fb2e$export$622cea445a1c5b7d as getOffset, $bbed8b41f857bcc0$export$24490316f764c430 as runAfterTransition, $9cc09df9fd7676be$export$7bbed75feba39706 as useDrag1D, $03deb23ff14920c4$export$4eaf04e54aa8eed6 as useGlobalListeners, $313b98861ee5dd6c$export$d6875122194c7b44 as useLabels, $df56164dff5785e2$export$4338b53315abf666 as useObjectRef, $4f58c5f72bcf79f7$export$496315a1608d9602 as useUpdateEffect, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c as useLayoutEffect, $9daab02d461809db$export$683480f191c0e3ea as useResizeObserver, $e7801be82b4b2a53$export$4debdb1a3f0fa79e as useSyncRef, $62d8ded9296f3872$export$cfa2225e87938781 as getScrollParent, $5df64b3807dc15ee$export$d699905dd57c73ca as useViewportSize, $ef06256079686ba0$export$f8aeda7b10753fa1 as useDescription, $c87311424ea30a05$export$9ac100e40613ea10 as isMac, $c87311424ea30a05$export$186c6964ca17d99 as isIPhone, $c87311424ea30a05$export$7bef049ce92e4224 as isIPad, $c87311424ea30a05$export$fedb369cb70207f1 as isIOS, $c87311424ea30a05$export$e1865c3bedcd822b as isAppleDevice, $c87311424ea30a05$export$78551043582a6a98 as isWebKit, $c87311424ea30a05$export$6446a186d09e379e as isChrome, $c87311424ea30a05$export$a11b0059900ceec8 as isAndroid, $e9faafb641e167db$export$90fc3a17d93f704c as useEvent, $1dbecbe27a04f9af$export$14d238f342723f25 as useValueEffect, $2f04cbc44ee30ce0$export$53a0910f038337bd as scrollIntoView, $4507461a1b870123$re_export$clamp as clamp, $4507461a1b870123$re_export$snapValueToStep as snapValueToStep, $6a7db85432448f7f$export$60278871457622de as isVirtualClick, $6a7db85432448f7f$export$29bf1b5f2c56cf63 as isVirtualPointerEvent};\n//# sourceMappingURL=module.js.map\n","import $iFADg$react, {useContext as $iFADg$useContext, useState as $iFADg$useState, useEffect as $iFADg$useEffect, useMemo as $iFADg$useMemo, useRef as $iFADg$useRef} from \"react\";\nimport {useIsSSR as $iFADg$useIsSSR} from \"@react-aria/ssr\";\nimport {LocalizedStringDictionary as $iFADg$LocalizedStringDictionary, LocalizedStringFormatter as $iFADg$LocalizedStringFormatter} from \"@internationalized/string\";\nimport {DateFormatter as $iFADg$DateFormatter} from \"@internationalized/date\";\nimport {NumberFormatter as $iFADg$NumberFormatter} from \"@internationalized/number\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // https://en.wikipedia.org/wiki/Right-to-left\nconst $148a7a147e38ea7f$var$RTL_SCRIPTS = new Set([\n 'Arab',\n 'Syrc',\n 'Samr',\n 'Mand',\n 'Thaa',\n 'Mend',\n 'Nkoo',\n 'Adlm',\n 'Rohg',\n 'Hebr'\n]);\nconst $148a7a147e38ea7f$var$RTL_LANGS = new Set([\n 'ae',\n 'ar',\n 'arc',\n 'bcc',\n 'bqi',\n 'ckb',\n 'dv',\n 'fa',\n 'glk',\n 'he',\n 'ku',\n 'mzn',\n 'nqo',\n 'pnb',\n 'ps',\n 'sd',\n 'ug',\n 'ur',\n 'yi'\n]);\nfunction $148a7a147e38ea7f$export$702d680b21cbd764(locale) {\n // If the Intl.Locale API is available, use it to get the script for the locale.\n // This is more accurate than guessing by language, since languages can be written in multiple scripts.\n // @ts-ignore\n if (Intl.Locale) {\n // @ts-ignore\n let script = new Intl.Locale(locale).maximize().script;\n return $148a7a147e38ea7f$var$RTL_SCRIPTS.has(script);\n }\n // If not, just guess by the language (first part of the locale)\n let lang = locale.split('-')[0];\n return $148a7a147e38ea7f$var$RTL_LANGS.has(lang);\n}\n\n\n\n\n\nfunction $1e5a04cdaf7d1af8$export$f09106e7c6677ec5() {\n // @ts-ignore\n let locale = typeof navigator !== 'undefined' && (navigator.language || navigator.userLanguage) || 'en-US';\n try {\n // @ts-ignore\n Intl.DateTimeFormat.supportedLocalesOf([\n locale\n ]);\n } catch (_err) {\n locale = 'en-US';\n }\n return {\n locale: locale,\n direction: $148a7a147e38ea7f$export$702d680b21cbd764(locale) ? 'rtl' : 'ltr'\n };\n}\nlet $1e5a04cdaf7d1af8$var$currentLocale = $1e5a04cdaf7d1af8$export$f09106e7c6677ec5();\nlet $1e5a04cdaf7d1af8$var$listeners = new Set();\nfunction $1e5a04cdaf7d1af8$var$updateLocale() {\n $1e5a04cdaf7d1af8$var$currentLocale = $1e5a04cdaf7d1af8$export$f09106e7c6677ec5();\n for (let listener of $1e5a04cdaf7d1af8$var$listeners)listener($1e5a04cdaf7d1af8$var$currentLocale);\n}\nfunction $1e5a04cdaf7d1af8$export$188ec29ebc2bdc3a() {\n let isSSR = $iFADg$useIsSSR();\n let [defaultLocale, setDefaultLocale] = $iFADg$useState($1e5a04cdaf7d1af8$var$currentLocale);\n $iFADg$useEffect(()=>{\n if ($1e5a04cdaf7d1af8$var$listeners.size === 0) window.addEventListener('languagechange', $1e5a04cdaf7d1af8$var$updateLocale);\n $1e5a04cdaf7d1af8$var$listeners.add(setDefaultLocale);\n return ()=>{\n $1e5a04cdaf7d1af8$var$listeners.delete(setDefaultLocale);\n if ($1e5a04cdaf7d1af8$var$listeners.size === 0) window.removeEventListener('languagechange', $1e5a04cdaf7d1af8$var$updateLocale);\n };\n }, []);\n // We cannot determine the browser's language on the server, so default to\n // en-US. This will be updated after hydration on the client to the correct value.\n if (isSSR) return {\n locale: 'en-US',\n direction: 'ltr'\n };\n return defaultLocale;\n}\n\n\n\nconst $18f2051aff69b9bf$var$I18nContext = /*#__PURE__*/ $iFADg$react.createContext(null);\nfunction $18f2051aff69b9bf$export$a54013f0d02a8f82(props) {\n let { locale: locale , children: children } = props;\n let defaultLocale = $1e5a04cdaf7d1af8$export$188ec29ebc2bdc3a();\n let value = locale ? {\n locale: locale,\n direction: $148a7a147e38ea7f$export$702d680b21cbd764(locale) ? 'rtl' : 'ltr'\n } : defaultLocale;\n return(/*#__PURE__*/ $iFADg$react.createElement($18f2051aff69b9bf$var$I18nContext.Provider, {\n value: value\n }, children));\n}\nfunction $18f2051aff69b9bf$export$43bb16f9c6d9e3f7() {\n let defaultLocale = $1e5a04cdaf7d1af8$export$188ec29ebc2bdc3a();\n let context = $iFADg$useContext($18f2051aff69b9bf$var$I18nContext);\n return context || defaultLocale;\n}\n\n\nvar $2aa2084a6c2b6b4f$exports = {};\n\"use strict\";\n\n\n\n\n\nconst $fca6afa0e843324b$var$cache = new WeakMap();\nfunction $fca6afa0e843324b$var$getCachedDictionary(strings) {\n let dictionary = $fca6afa0e843324b$var$cache.get(strings);\n if (!dictionary) {\n dictionary = new $iFADg$LocalizedStringDictionary(strings);\n $fca6afa0e843324b$var$cache.set(strings, dictionary);\n }\n return dictionary;\n}\nfunction $fca6afa0e843324b$export$f12b703ca79dfbb1(strings) {\n let { locale: locale } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7();\n let dictionary = $iFADg$useMemo(()=>$fca6afa0e843324b$var$getCachedDictionary(strings)\n , [\n strings\n ]);\n return $iFADg$useMemo(()=>new $iFADg$LocalizedStringFormatter(locale, dictionary)\n , [\n locale,\n dictionary\n ]);\n}\n\n\n\n\nfunction $33bf17300c498528$export$a2f47a3d2973640(options = {\n}) {\n let { locale: locale } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7();\n // @ts-ignore\n return $iFADg$useMemo(()=>new Intl.ListFormat(locale, options)\n , [\n locale,\n options\n ]);\n}\n\n\n\n\n\nfunction $896ba0a80a8f4d36$export$85fd5fdf27bacc79(options) {\n // Reuse last options object if it is shallowly equal, which allows the useMemo result to also be reused.\n let lastOptions = $iFADg$useRef(null);\n if (options && lastOptions.current && $896ba0a80a8f4d36$var$isEqual(options, lastOptions.current)) options = lastOptions.current;\n lastOptions.current = options;\n let { locale: locale } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7();\n return $iFADg$useMemo(()=>new $iFADg$DateFormatter(locale, options)\n , [\n locale,\n options\n ]);\n}\nfunction $896ba0a80a8f4d36$var$isEqual(a, b) {\n if (a === b) return true;\n let aKeys = Object.keys(a);\n let bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n for (let key of aKeys){\n if (b[key] !== a[key]) return false;\n }\n return true;\n}\n\n\n\n\n\nfunction $a916eb452884faea$export$b7a616150fdb9f44(options = {\n}) {\n let { locale: locale } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7();\n return $iFADg$useMemo(()=>new $iFADg$NumberFormatter(locale, options)\n , [\n locale,\n options\n ]);\n}\n\n\n\nlet $325a3faab7a68acd$var$cache = new Map();\nfunction $325a3faab7a68acd$export$a16aca283550c30d(options) {\n let { locale: locale } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7();\n let cacheKey = locale + (options ? Object.entries(options).sort((a, b)=>a[0] < b[0] ? -1 : 1\n ).join() : '');\n if ($325a3faab7a68acd$var$cache.has(cacheKey)) return $325a3faab7a68acd$var$cache.get(cacheKey);\n let formatter = new Intl.Collator(locale, options);\n $325a3faab7a68acd$var$cache.set(cacheKey, formatter);\n return formatter;\n}\n\n\n\nfunction $bb77f239b46e8c72$export$3274cf84b703fff(options) {\n let collator = $325a3faab7a68acd$export$a16aca283550c30d({\n usage: 'search',\n ...options\n });\n // TODO(later): these methods don't currently support the ignorePunctuation option.\n return {\n startsWith (string, substring) {\n if (substring.length === 0) return true;\n // Normalize both strings so we can slice safely\n // TODO: take into account the ignorePunctuation option as well...\n string = string.normalize('NFC');\n substring = substring.normalize('NFC');\n return collator.compare(string.slice(0, substring.length), substring) === 0;\n },\n endsWith (string, substring) {\n if (substring.length === 0) return true;\n string = string.normalize('NFC');\n substring = substring.normalize('NFC');\n return collator.compare(string.slice(-substring.length), substring) === 0;\n },\n contains (string, substring) {\n if (substring.length === 0) return true;\n string = string.normalize('NFC');\n substring = substring.normalize('NFC');\n let scan = 0;\n let sliceLen = substring.length;\n for(; scan + sliceLen <= string.length; scan++){\n let slice = string.slice(scan, scan + sliceLen);\n if (collator.compare(substring, slice) === 0) return true;\n }\n return false;\n }\n };\n}\n\n\n\n\nexport {$18f2051aff69b9bf$export$a54013f0d02a8f82 as I18nProvider, $18f2051aff69b9bf$export$43bb16f9c6d9e3f7 as useLocale, $fca6afa0e843324b$export$f12b703ca79dfbb1 as useLocalizedStringFormatter, $33bf17300c498528$export$a2f47a3d2973640 as useListFormatter, $896ba0a80a8f4d36$export$85fd5fdf27bacc79 as useDateFormatter, $a916eb452884faea$export$b7a616150fdb9f44 as useNumberFormatter, $325a3faab7a68acd$export$a16aca283550c30d as useCollator, $bb77f239b46e8c72$export$3274cf84b703fff as useFilter};\n//# sourceMappingURL=real-module.js.map\n","import {useRef as $eCAIO$useRef, useEffect as $eCAIO$useEffect, useMemo as $eCAIO$useMemo} from \"react\";\nimport {getFocusableTreeWalker as $eCAIO$getFocusableTreeWalker, focusSafely as $eCAIO$focusSafely} from \"@react-aria/focus\";\nimport {focusWithoutScrolling as $eCAIO$focusWithoutScrolling, useEvent as $eCAIO$useEvent, scrollIntoView as $eCAIO$scrollIntoView, mergeProps as $eCAIO$mergeProps, isAppleDevice as $eCAIO$isAppleDevice, isMac as $eCAIO$isMac} from \"@react-aria/utils\";\nimport {useLocale as $eCAIO$useLocale, useCollator as $eCAIO$useCollator} from \"@react-aria/i18n\";\nimport {usePress as $eCAIO$usePress, useLongPress as $eCAIO$useLongPress} from \"@react-aria/interactions\";\n\n\n\n\n\n\nfunction $feb5ffebff200149$export$d3e3bd3e26688c04(e) {\n // Ctrl + Arrow Up/Arrow Down has a system wide meaning on macOS, so use Alt instead.\n // On Windows and Ubuntu, Alt + Space has a system wide meaning.\n return $eCAIO$isAppleDevice() ? e.altKey : e.ctrlKey;\n}\nfunction $feb5ffebff200149$export$16792effe837dba3(e) {\n if ($eCAIO$isMac()) return e.metaKey;\n return e.ctrlKey;\n}\n\n\n\n\n/**\n * Controls how long to wait before clearing the typeahead buffer.\n */ const $fb3050f43d946246$var$TYPEAHEAD_DEBOUNCE_WAIT_MS = 1000; // 1 second\nfunction $fb3050f43d946246$export$e32c88dfddc6e1d8(options) {\n let { keyboardDelegate: keyboardDelegate , selectionManager: selectionManager , onTypeSelect: onTypeSelect } = options;\n let state = $eCAIO$useRef({\n search: '',\n timeout: null\n }).current;\n let onKeyDown = (e)=>{\n let character = $fb3050f43d946246$var$getStringForKey(e.key);\n if (!character || e.ctrlKey || e.metaKey) return;\n // Do not propagate the Spacebar event if it's meant to be part of the search.\n // When we time out, the search term becomes empty, hence the check on length.\n // Trimming is to account for the case of pressing the Spacebar more than once,\n // which should cycle through the selection/deselection of the focused item.\n if (character === ' ' && state.search.trim().length > 0) {\n e.preventDefault();\n if (!('continuePropagation' in e)) e.stopPropagation();\n }\n state.search += character;\n // Use the delegate to find a key to focus.\n // Prioritize items after the currently focused item, falling back to searching the whole list.\n let key = keyboardDelegate.getKeyForSearch(state.search, selectionManager.focusedKey);\n // If no key found, search from the top.\n if (key == null) key = keyboardDelegate.getKeyForSearch(state.search);\n if (key != null) {\n selectionManager.setFocusedKey(key);\n if (onTypeSelect) onTypeSelect(key);\n }\n clearTimeout(state.timeout);\n state.timeout = setTimeout(()=>{\n state.search = '';\n }, $fb3050f43d946246$var$TYPEAHEAD_DEBOUNCE_WAIT_MS);\n };\n return {\n typeSelectProps: {\n // Using a capturing listener to catch the keydown event before\n // other hooks in order to handle the Spacebar event.\n onKeyDownCapture: keyboardDelegate.getKeyForSearch ? onKeyDown : null\n }\n };\n}\nfunction $fb3050f43d946246$var$getStringForKey(key) {\n // If the key is of length 1, it is an ASCII value.\n // Otherwise, if there are no ASCII characters in the key name,\n // it is a Unicode character.\n // See https://www.w3.org/TR/uievents-key/\n if (key.length === 1 || !/^[A-Z]/i.test(key)) return key;\n return '';\n}\n\n\nfunction $ae20dd8cbca75726$export$d6daf82dcd84e87c(options) {\n let { selectionManager: manager , keyboardDelegate: delegate , ref: ref , autoFocus: autoFocus = false , shouldFocusWrap: shouldFocusWrap = false , disallowEmptySelection: disallowEmptySelection = false , disallowSelectAll: disallowSelectAll = false , selectOnFocus: selectOnFocus = manager.selectionBehavior === 'replace' , disallowTypeAhead: disallowTypeAhead = false , shouldUseVirtualFocus: shouldUseVirtualFocus , allowsTabNavigation: allowsTabNavigation = false , isVirtualized: isVirtualized , scrollRef: // If no scrollRef is provided, assume the collection ref is the scrollable region\n scrollRef = ref } = options;\n let { direction: direction } = $eCAIO$useLocale();\n let onKeyDown = (e)=>{\n // Prevent option + tab from doing anything since it doesn't move focus to the cells, only buttons/checkboxes\n if (e.altKey && e.key === 'Tab') e.preventDefault();\n // Keyboard events bubble through portals. Don't handle keyboard events\n // for elements outside the collection (e.g. menus).\n if (!ref.current.contains(e.target)) return;\n const navigateToKey = (key, childFocus)=>{\n if (key != null) {\n manager.setFocusedKey(key, childFocus);\n if (e.shiftKey && manager.selectionMode === 'multiple') manager.extendSelection(key);\n else if (selectOnFocus && !$feb5ffebff200149$export$d3e3bd3e26688c04(e)) manager.replaceSelection(key);\n }\n };\n switch(e.key){\n case 'ArrowDown':\n if (delegate.getKeyBelow) {\n var ref4, ref1;\n e.preventDefault();\n let nextKey = manager.focusedKey != null ? delegate.getKeyBelow(manager.focusedKey) : (ref4 = delegate.getFirstKey) === null || ref4 === void 0 ? void 0 : ref4.call(delegate);\n if (nextKey == null && shouldFocusWrap) nextKey = (ref1 = delegate.getFirstKey) === null || ref1 === void 0 ? void 0 : ref1.call(delegate, manager.focusedKey);\n navigateToKey(nextKey);\n }\n break;\n case 'ArrowUp':\n if (delegate.getKeyAbove) {\n var ref2, ref3;\n e.preventDefault();\n let nextKey = manager.focusedKey != null ? delegate.getKeyAbove(manager.focusedKey) : (ref2 = delegate.getLastKey) === null || ref2 === void 0 ? void 0 : ref2.call(delegate);\n if (nextKey == null && shouldFocusWrap) nextKey = (ref3 = delegate.getLastKey) === null || ref3 === void 0 ? void 0 : ref3.call(delegate, manager.focusedKey);\n navigateToKey(nextKey);\n }\n break;\n case 'ArrowLeft':\n if (delegate.getKeyLeftOf) {\n e.preventDefault();\n let nextKey = delegate.getKeyLeftOf(manager.focusedKey);\n navigateToKey(nextKey, direction === 'rtl' ? 'first' : 'last');\n }\n break;\n case 'ArrowRight':\n if (delegate.getKeyRightOf) {\n e.preventDefault();\n let nextKey = delegate.getKeyRightOf(manager.focusedKey);\n navigateToKey(nextKey, direction === 'rtl' ? 'last' : 'first');\n }\n break;\n case 'Home':\n if (delegate.getFirstKey) {\n e.preventDefault();\n let firstKey = delegate.getFirstKey(manager.focusedKey, $feb5ffebff200149$export$16792effe837dba3(e));\n manager.setFocusedKey(firstKey);\n if ($feb5ffebff200149$export$16792effe837dba3(e) && e.shiftKey && manager.selectionMode === 'multiple') manager.extendSelection(firstKey);\n else if (selectOnFocus) manager.replaceSelection(firstKey);\n }\n break;\n case 'End':\n if (delegate.getLastKey) {\n e.preventDefault();\n let lastKey = delegate.getLastKey(manager.focusedKey, $feb5ffebff200149$export$16792effe837dba3(e));\n manager.setFocusedKey(lastKey);\n if ($feb5ffebff200149$export$16792effe837dba3(e) && e.shiftKey && manager.selectionMode === 'multiple') manager.extendSelection(lastKey);\n else if (selectOnFocus) manager.replaceSelection(lastKey);\n }\n break;\n case 'PageDown':\n if (delegate.getKeyPageBelow) {\n e.preventDefault();\n let nextKey = delegate.getKeyPageBelow(manager.focusedKey);\n navigateToKey(nextKey);\n }\n break;\n case 'PageUp':\n if (delegate.getKeyPageAbove) {\n e.preventDefault();\n let nextKey = delegate.getKeyPageAbove(manager.focusedKey);\n navigateToKey(nextKey);\n }\n break;\n case 'a':\n if ($feb5ffebff200149$export$16792effe837dba3(e) && manager.selectionMode === 'multiple' && disallowSelectAll !== true) {\n e.preventDefault();\n manager.selectAll();\n }\n break;\n case 'Escape':\n e.preventDefault();\n if (!disallowEmptySelection) manager.clearSelection();\n break;\n case 'Tab':\n if (!allowsTabNavigation) {\n // There may be elements that are \"tabbable\" inside a collection (e.g. in a grid cell).\n // However, collections should be treated as a single tab stop, with arrow key navigation internally.\n // We don't control the rendering of these, so we can't override the tabIndex to prevent tabbing.\n // Instead, we handle the Tab key, and move focus manually to the first/last tabbable element\n // in the collection, so that the browser default behavior will apply starting from that element\n // rather than the currently focused one.\n if (e.shiftKey) ref.current.focus();\n else {\n let walker = $eCAIO$getFocusableTreeWalker(ref.current, {\n tabbable: true\n });\n let next;\n let last;\n do {\n last = walker.lastChild();\n if (last) next = last;\n }while (last)\n if (next && !next.contains(document.activeElement)) $eCAIO$focusWithoutScrolling(next);\n }\n break;\n }\n }\n };\n // Store the scroll position so we can restore it later.\n let scrollPos = $eCAIO$useRef({\n top: 0,\n left: 0\n });\n $eCAIO$useEvent(scrollRef, 'scroll', isVirtualized ? null : ()=>{\n scrollPos.current = {\n top: scrollRef.current.scrollTop,\n left: scrollRef.current.scrollLeft\n };\n });\n let onFocus = (e)=>{\n if (manager.isFocused) {\n // If a focus event bubbled through a portal, reset focus state.\n if (!e.currentTarget.contains(e.target)) manager.setFocused(false);\n return;\n }\n // Focus events can bubble through portals. Ignore these events.\n if (!e.currentTarget.contains(e.target)) return;\n manager.setFocused(true);\n if (manager.focusedKey == null) {\n let navigateToFirstKey = (key)=>{\n if (key != null) {\n manager.setFocusedKey(key);\n if (selectOnFocus) manager.replaceSelection(key);\n }\n };\n // If the user hasn't yet interacted with the collection, there will be no focusedKey set.\n // Attempt to detect whether the user is tabbing forward or backward into the collection\n // and either focus the first or last item accordingly.\n let relatedTarget = e.relatedTarget;\n var _lastSelectedKey, _firstSelectedKey;\n if (relatedTarget && e.currentTarget.compareDocumentPosition(relatedTarget) & Node.DOCUMENT_POSITION_FOLLOWING) navigateToFirstKey((_lastSelectedKey = manager.lastSelectedKey) !== null && _lastSelectedKey !== void 0 ? _lastSelectedKey : delegate.getLastKey());\n else navigateToFirstKey((_firstSelectedKey = manager.firstSelectedKey) !== null && _firstSelectedKey !== void 0 ? _firstSelectedKey : delegate.getFirstKey());\n } else if (!isVirtualized) {\n // Restore the scroll position to what it was before.\n scrollRef.current.scrollTop = scrollPos.current.top;\n scrollRef.current.scrollLeft = scrollPos.current.left;\n // Refocus and scroll the focused item into view if it exists within the scrollable region.\n let element = scrollRef.current.querySelector(`[data-key=\"${manager.focusedKey}\"]`);\n if (element) {\n // This prevents a flash of focus on the first/last element in the collection\n $eCAIO$focusWithoutScrolling(element);\n $eCAIO$scrollIntoView(scrollRef.current, element);\n }\n }\n };\n let onBlur = (e)=>{\n // Don't set blurred and then focused again if moving focus within the collection.\n if (!e.currentTarget.contains(e.relatedTarget)) manager.setFocused(false);\n };\n const autoFocusRef = $eCAIO$useRef(autoFocus);\n $eCAIO$useEffect(()=>{\n if (autoFocusRef.current) {\n let focusedKey = null;\n // Check focus strategy to determine which item to focus\n if (autoFocus === 'first') focusedKey = delegate.getFirstKey();\n if (autoFocus === 'last') focusedKey = delegate.getLastKey();\n // If there are any selected keys, make the first one the new focus target\n let selectedKeys = manager.selectedKeys;\n if (selectedKeys.size) focusedKey = selectedKeys.values().next().value;\n manager.setFocused(true);\n manager.setFocusedKey(focusedKey);\n // If no default focus key is selected, focus the collection itself.\n if (focusedKey == null && !shouldUseVirtualFocus) $eCAIO$focusSafely(ref.current);\n }\n autoFocusRef.current = false;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n // If not virtualized, scroll the focused element into view when the focusedKey changes.\n // When virtualized, Virtualizer handles this internally.\n $eCAIO$useEffect(()=>{\n if (!isVirtualized && manager.focusedKey && (scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current)) {\n let element = scrollRef.current.querySelector(`[data-key=\"${manager.focusedKey}\"]`);\n if (element) $eCAIO$scrollIntoView(scrollRef.current, element);\n }\n }, [\n isVirtualized,\n scrollRef,\n manager.focusedKey\n ]);\n let handlers = {\n onKeyDown: onKeyDown,\n onFocus: onFocus,\n onBlur: onBlur,\n onMouseDown (e) {\n // Ignore events that bubbled through portals.\n if (scrollRef.current === e.target) // Prevent focus going to the collection when clicking on the scrollbar.\n e.preventDefault();\n }\n };\n let { typeSelectProps: typeSelectProps } = $fb3050f43d946246$export$e32c88dfddc6e1d8({\n keyboardDelegate: delegate,\n selectionManager: manager\n });\n if (!disallowTypeAhead) handlers = $eCAIO$mergeProps(typeSelectProps, handlers);\n // If nothing is focused within the collection, make the collection itself tabbable.\n // This will be marshalled to either the first or last item depending on where focus came from.\n // If using virtual focus, don't set a tabIndex at all so that VoiceOver on iOS 14 doesn't try\n // to move real DOM focus to the element anyway.\n let tabIndex;\n if (!shouldUseVirtualFocus) tabIndex = manager.focusedKey == null ? 0 : -1;\n return {\n collectionProps: {\n ...handlers,\n tabIndex: tabIndex\n }\n };\n}\n\n\n\n\n\n\n\nfunction $880e95eb8b93ba9a$export$ecf600387e221c37(options) {\n let { selectionManager: manager , key: key , ref: ref , shouldSelectOnPressUp: shouldSelectOnPressUp , isVirtualized: isVirtualized , shouldUseVirtualFocus: shouldUseVirtualFocus , focus: focus , isDisabled: isDisabled , onAction: onAction , allowsDifferentPressOrigin: allowsDifferentPressOrigin } = options;\n let onSelect = (e)=>{\n if (e.pointerType === 'keyboard' && $feb5ffebff200149$export$d3e3bd3e26688c04(e)) manager.toggleSelection(key);\n else {\n if (manager.selectionMode === 'none') return;\n if (manager.selectionMode === 'single') {\n if (manager.isSelected(key) && !manager.disallowEmptySelection) manager.toggleSelection(key);\n else manager.replaceSelection(key);\n } else if (e && e.shiftKey) manager.extendSelection(key);\n else if (manager.selectionBehavior === 'toggle' || e && ($feb5ffebff200149$export$16792effe837dba3(e) || e.pointerType === 'touch' || e.pointerType === 'virtual')) // if touch or virtual (VO) then we just want to toggle, otherwise it's impossible to multi select because they don't have modifier keys\n manager.toggleSelection(key);\n else manager.replaceSelection(key);\n }\n };\n // Focus the associated DOM node when this item becomes the focusedKey\n $eCAIO$useEffect(()=>{\n let isFocused = key === manager.focusedKey;\n if (isFocused && manager.isFocused && !shouldUseVirtualFocus && document.activeElement !== ref.current) {\n if (focus) focus();\n else $eCAIO$focusSafely(ref.current);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n ref,\n key,\n manager.focusedKey,\n manager.childFocusStrategy,\n manager.isFocused,\n shouldUseVirtualFocus\n ]);\n isDisabled = isDisabled || manager.isDisabled(key);\n // Set tabIndex to 0 if the element is focused, or -1 otherwise so that only the last focused\n // item is tabbable. If using virtual focus, don't set a tabIndex at all so that VoiceOver\n // on iOS 14 doesn't try to move real DOM focus to the item anyway.\n let itemProps = {\n };\n if (!shouldUseVirtualFocus && !isDisabled) itemProps = {\n tabIndex: key === manager.focusedKey ? 0 : -1,\n onFocus (e) {\n if (e.target === ref.current) manager.setFocusedKey(key);\n }\n };\n else if (isDisabled) itemProps.onMouseDown = (e)=>{\n // Prevent focus going to the body when clicking on a disabled item.\n e.preventDefault();\n };\n // With checkbox selection, onAction (i.e. navigation) becomes primary, and occurs on a single click of the row.\n // Clicking the checkbox enters selection mode, after which clicking anywhere on any row toggles selection for that row.\n // With highlight selection, onAction is secondary, and occurs on double click. Single click selects the row.\n // With touch, onAction occurs on single tap, and long press enters selection mode.\n let allowsSelection = !isDisabled && manager.canSelectItem(key);\n let allowsActions = onAction && !isDisabled;\n let hasPrimaryAction = allowsActions && (manager.selectionBehavior === 'replace' ? !allowsSelection : manager.isEmpty);\n let hasSecondaryAction = allowsActions && allowsSelection && manager.selectionBehavior === 'replace';\n let hasAction = hasPrimaryAction || hasSecondaryAction;\n let modality = $eCAIO$useRef(null);\n let longPressEnabled = hasAction && allowsSelection;\n let longPressEnabledOnPressStart = $eCAIO$useRef(false);\n let hadPrimaryActionOnPressStart = $eCAIO$useRef(false);\n // By default, selection occurs on pointer down. This can be strange if selecting an\n // item causes the UI to disappear immediately (e.g. menus).\n // If shouldSelectOnPressUp is true, we use onPressUp instead of onPressStart.\n // onPress requires a pointer down event on the same element as pointer up. For menus,\n // we want to be able to have the pointer down on the trigger that opens the menu and\n // the pointer up on the menu item rather than requiring a separate press.\n // For keyboard events, selection still occurs on key down.\n let itemPressProps = {\n };\n if (shouldSelectOnPressUp) {\n itemPressProps.onPressStart = (e)=>{\n modality.current = e.pointerType;\n longPressEnabledOnPressStart.current = longPressEnabled;\n if (e.pointerType === 'keyboard' && (!hasAction || $880e95eb8b93ba9a$var$isSelectionKey())) onSelect(e);\n };\n // If allowsDifferentPressOrigin, make selection happen on pressUp (e.g. open menu on press down, selection on menu item happens on press up.)\n // Otherwise, have selection happen onPress (prevents listview row selection when clicking on interactable elements in the row)\n if (!allowsDifferentPressOrigin) itemPressProps.onPress = (e)=>{\n if (hasPrimaryAction || hasSecondaryAction && e.pointerType !== 'mouse') {\n if (e.pointerType === 'keyboard' && !$880e95eb8b93ba9a$var$isActionKey()) return;\n onAction();\n } else if (e.pointerType !== 'keyboard') onSelect(e);\n };\n else {\n itemPressProps.onPressUp = (e)=>{\n if (e.pointerType !== 'keyboard') onSelect(e);\n };\n itemPressProps.onPress = hasPrimaryAction ? ()=>onAction()\n : null;\n }\n } else {\n itemPressProps.onPressStart = (e)=>{\n modality.current = e.pointerType;\n longPressEnabledOnPressStart.current = longPressEnabled;\n hadPrimaryActionOnPressStart.current = hasPrimaryAction;\n // Select on mouse down unless there is a primary action which will occur on mouse up.\n // For keyboard, select on key down. If there is an action, the Space key selects on key down,\n // and the Enter key performs onAction on key up.\n if (e.pointerType === 'mouse' && !hasPrimaryAction || e.pointerType === 'keyboard' && (!onAction || $880e95eb8b93ba9a$var$isSelectionKey())) onSelect(e);\n };\n itemPressProps.onPress = (e)=>{\n // Selection occurs on touch up. Primary actions always occur on pointer up.\n // Both primary and secondary actions occur on Enter key up. The only exception\n // is secondary actions, which occur on double click with a mouse.\n if (e.pointerType === 'touch' || e.pointerType === 'pen' || e.pointerType === 'virtual' || e.pointerType === 'keyboard' && hasAction && $880e95eb8b93ba9a$var$isActionKey() || e.pointerType === 'mouse' && hadPrimaryActionOnPressStart.current) {\n if (hasAction) onAction();\n else onSelect(e);\n }\n };\n }\n if (!isVirtualized) itemProps['data-key'] = key;\n itemPressProps.preventFocusOnPress = shouldUseVirtualFocus;\n let { pressProps: pressProps , isPressed: isPressed } = $eCAIO$usePress(itemPressProps);\n // Double clicking with a mouse with selectionBehavior = 'replace' performs an action.\n let onDoubleClick = hasSecondaryAction ? (e)=>{\n if (modality.current === 'mouse') {\n e.stopPropagation();\n e.preventDefault();\n onAction();\n }\n } : undefined;\n // Long pressing an item with touch when selectionBehavior = 'replace' switches the selection behavior\n // to 'toggle'. This changes the single tap behavior from performing an action (i.e. navigating) to\n // selecting, and may toggle the appearance of a UI affordance like checkboxes on each item.\n let { longPressProps: longPressProps } = $eCAIO$useLongPress({\n isDisabled: !longPressEnabled,\n onLongPress (e) {\n if (e.pointerType === 'touch') {\n onSelect(e);\n manager.setSelectionBehavior('toggle');\n }\n }\n });\n // Prevent native drag and drop on long press if we also select on long press.\n // Once the user is in selection mode, they can long press again to drag.\n // Use a capturing listener to ensure this runs before useDrag, regardless of\n // the order the props get merged.\n let onDragStartCapture = (e)=>{\n if (modality.current === 'touch' && longPressEnabledOnPressStart.current) e.preventDefault();\n };\n return {\n itemProps: $eCAIO$mergeProps(itemProps, allowsSelection || hasPrimaryAction ? pressProps : {\n }, longPressEnabled ? longPressProps : {\n }, {\n onDoubleClick: onDoubleClick,\n onDragStartCapture: onDragStartCapture\n }),\n isPressed: isPressed,\n isSelected: manager.isSelected(key),\n isDisabled: isDisabled,\n allowsSelection: allowsSelection,\n hasAction: hasAction\n };\n}\nfunction $880e95eb8b93ba9a$var$isActionKey() {\n let event = window.event;\n return (event === null || event === void 0 ? void 0 : event.key) === 'Enter';\n}\nfunction $880e95eb8b93ba9a$var$isSelectionKey() {\n let event = window.event;\n return (event === null || event === void 0 ? void 0 : event.key) === ' ' || (event === null || event === void 0 ? void 0 : event.code) === 'Space';\n}\n\n\n\nclass $2a25aae57d74318e$export$a05409b8bb224a5a {\n getKeyBelow(key) {\n key = this.collection.getKeyAfter(key);\n while(key != null){\n let item = this.collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(key)) return key;\n key = this.collection.getKeyAfter(key);\n }\n }\n getKeyAbove(key) {\n key = this.collection.getKeyBefore(key);\n while(key != null){\n let item = this.collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(key)) return key;\n key = this.collection.getKeyBefore(key);\n }\n }\n getFirstKey() {\n let key = this.collection.getFirstKey();\n while(key != null){\n let item = this.collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(key)) return key;\n key = this.collection.getKeyAfter(key);\n }\n }\n getLastKey() {\n let key = this.collection.getLastKey();\n while(key != null){\n let item = this.collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(key)) return key;\n key = this.collection.getKeyBefore(key);\n }\n }\n getItem(key) {\n return this.ref.current.querySelector(`[data-key=\"${key}\"]`);\n }\n getKeyPageAbove(key) {\n let menu = this.ref.current;\n let item = this.getItem(key);\n if (!item) return null;\n let pageY = Math.max(0, item.offsetTop + item.offsetHeight - menu.offsetHeight);\n while(item && item.offsetTop > pageY){\n key = this.getKeyAbove(key);\n item = this.getItem(key);\n }\n return key;\n }\n getKeyPageBelow(key) {\n let menu = this.ref.current;\n let item = this.getItem(key);\n if (!item) return null;\n let pageY = Math.min(menu.scrollHeight, item.offsetTop - item.offsetHeight + menu.offsetHeight);\n while(item && item.offsetTop < pageY){\n key = this.getKeyBelow(key);\n item = this.getItem(key);\n }\n return key;\n }\n getKeyForSearch(search, fromKey) {\n if (!this.collator) return null;\n let collection = this.collection;\n let key = fromKey || this.getFirstKey();\n while(key != null){\n let item = collection.getItem(key);\n let substring = item.textValue.slice(0, search.length);\n if (item.textValue && this.collator.compare(substring, search) === 0) return key;\n key = this.getKeyBelow(key);\n }\n return null;\n }\n constructor(collection, disabledKeys, ref, collator){\n this.collection = collection;\n this.disabledKeys = disabledKeys;\n this.ref = ref;\n this.collator = collator;\n }\n}\n\n\n\n\nfunction $982254629710d113$export$b95089534ab7c1fd(props) {\n let { selectionManager: selectionManager , collection: collection , disabledKeys: disabledKeys , ref: ref , keyboardDelegate: keyboardDelegate , autoFocus: autoFocus , shouldFocusWrap: shouldFocusWrap , isVirtualized: isVirtualized , disallowEmptySelection: disallowEmptySelection , selectOnFocus: selectOnFocus = selectionManager.selectionBehavior === 'replace' , disallowTypeAhead: disallowTypeAhead , shouldUseVirtualFocus: shouldUseVirtualFocus , allowsTabNavigation: allowsTabNavigation } = props;\n // By default, a KeyboardDelegate is provided which uses the DOM to query layout information (e.g. for page up/page down).\n // When virtualized, the layout object will be passed in as a prop and override this.\n let collator = $eCAIO$useCollator({\n usage: 'search',\n sensitivity: 'base'\n });\n let disabledBehavior = selectionManager.disabledBehavior;\n let delegate = $eCAIO$useMemo(()=>keyboardDelegate || new $2a25aae57d74318e$export$a05409b8bb224a5a(collection, disabledBehavior === 'selection' ? new Set() : disabledKeys, ref, collator)\n , [\n keyboardDelegate,\n collection,\n disabledKeys,\n ref,\n collator,\n disabledBehavior\n ]);\n let { collectionProps: collectionProps } = $ae20dd8cbca75726$export$d6daf82dcd84e87c({\n ref: ref,\n selectionManager: selectionManager,\n keyboardDelegate: delegate,\n autoFocus: autoFocus,\n shouldFocusWrap: shouldFocusWrap,\n disallowEmptySelection: disallowEmptySelection,\n selectOnFocus: selectOnFocus,\n disallowTypeAhead: disallowTypeAhead,\n shouldUseVirtualFocus: shouldUseVirtualFocus,\n allowsTabNavigation: allowsTabNavigation,\n isVirtualized: isVirtualized,\n scrollRef: ref\n });\n return {\n listProps: collectionProps\n };\n}\n\n\n\n\n\n\nexport {$ae20dd8cbca75726$export$d6daf82dcd84e87c as useSelectableCollection, $880e95eb8b93ba9a$export$ecf600387e221c37 as useSelectableItem, $982254629710d113$export$b95089534ab7c1fd as useSelectableList, $2a25aae57d74318e$export$a05409b8bb224a5a as ListKeyboardDelegate, $fb3050f43d946246$export$e32c88dfddc6e1d8 as useTypeSelect};\n//# sourceMappingURL=module.js.map\n","import {filterDOMProps as $frWMC$filterDOMProps, useId as $frWMC$useId, mergeProps as $frWMC$mergeProps, useSlotId as $frWMC$useSlotId, isMac as $frWMC$isMac, isWebKit as $frWMC$isWebKit} from \"@react-aria/utils\";\nimport {useFocusWithin as $frWMC$useFocusWithin, useHover as $frWMC$useHover, isFocusVisible as $frWMC$isFocusVisible} from \"@react-aria/interactions\";\nimport {useLabel as $frWMC$useLabel} from \"@react-aria/label\";\nimport {useSelectableList as $frWMC$useSelectableList, useSelectableItem as $frWMC$useSelectableItem} from \"@react-aria/selection\";\nimport {getItemCount as $frWMC$getItemCount} from \"@react-stately/collections\";\n\n\nconst $b1f0cad8af73213b$export$3585ede4d035bf14 = new WeakMap();\nfunction $b1f0cad8af73213b$var$normalizeKey(key) {\n if (typeof key === 'string') return key.replace(/\\s*/g, '');\n return '' + key;\n}\nfunction $b1f0cad8af73213b$export$9145995848b05025(state, itemKey) {\n let data = $b1f0cad8af73213b$export$3585ede4d035bf14.get(state);\n if (!data) throw new Error('Unknown list');\n return `${data.id}-option-${$b1f0cad8af73213b$var$normalizeKey(itemKey)}`;\n}\n\n\n\n\n\n\nfunction $c132121280ec012d$export$50eacbbf140a3141(props, state, ref) {\n let domProps = $frWMC$filterDOMProps(props, {\n labelable: true\n });\n let { listProps: listProps } = $frWMC$useSelectableList({\n ...props,\n ref: ref,\n selectionManager: state.selectionManager,\n collection: state.collection,\n disabledKeys: state.disabledKeys\n });\n let { focusWithinProps: focusWithinProps } = $frWMC$useFocusWithin({\n onFocusWithin: props.onFocus,\n onBlurWithin: props.onBlur,\n onFocusWithinChange: props.onFocusChange\n });\n // Share list id and some props with child options.\n let id = $frWMC$useId(props.id);\n $b1f0cad8af73213b$export$3585ede4d035bf14.set(state, {\n id: id,\n shouldUseVirtualFocus: props.shouldUseVirtualFocus,\n shouldSelectOnPressUp: props.shouldSelectOnPressUp,\n shouldFocusOnHover: props.shouldFocusOnHover,\n isVirtualized: props.isVirtualized,\n onAction: props.onAction\n });\n let { labelProps: labelProps , fieldProps: fieldProps } = $frWMC$useLabel({\n ...props,\n id: id,\n // listbox is not an HTML input element so it\n // shouldn't be labeled by a <label> element.\n labelElementType: 'span'\n });\n return {\n labelProps: labelProps,\n listBoxProps: $frWMC$mergeProps(domProps, focusWithinProps, state.selectionManager.selectionMode === 'multiple' ? {\n 'aria-multiselectable': 'true'\n } : {\n }, {\n role: 'listbox',\n ...$frWMC$mergeProps(fieldProps, listProps)\n })\n };\n}\n\n\n\n\n\n\n\nfunction $293f70390ea03370$export$497855f14858aa34(props, state, ref) {\n let { key: key } = props;\n let data = $b1f0cad8af73213b$export$3585ede4d035bf14.get(state);\n var _isDisabled;\n let isDisabled = (_isDisabled = props.isDisabled) !== null && _isDisabled !== void 0 ? _isDisabled : state.disabledKeys.has(key);\n var _isSelected;\n let isSelected = (_isSelected = props.isSelected) !== null && _isSelected !== void 0 ? _isSelected : state.selectionManager.isSelected(key);\n let isFocused = state.selectionManager.focusedKey === key;\n var _shouldSelectOnPressUp;\n let shouldSelectOnPressUp = (_shouldSelectOnPressUp = props.shouldSelectOnPressUp) !== null && _shouldSelectOnPressUp !== void 0 ? _shouldSelectOnPressUp : data.shouldSelectOnPressUp;\n var _shouldFocusOnHover;\n let shouldFocusOnHover = (_shouldFocusOnHover = props.shouldFocusOnHover) !== null && _shouldFocusOnHover !== void 0 ? _shouldFocusOnHover : data.shouldFocusOnHover;\n var _shouldUseVirtualFocus;\n let shouldUseVirtualFocus = (_shouldUseVirtualFocus = props.shouldUseVirtualFocus) !== null && _shouldUseVirtualFocus !== void 0 ? _shouldUseVirtualFocus : data.shouldUseVirtualFocus;\n var _isVirtualized;\n let isVirtualized = (_isVirtualized = props.isVirtualized) !== null && _isVirtualized !== void 0 ? _isVirtualized : data.isVirtualized;\n let labelId = $frWMC$useSlotId();\n let descriptionId = $frWMC$useSlotId();\n let optionProps = {\n role: 'option',\n 'aria-disabled': isDisabled,\n 'aria-selected': state.selectionManager.selectionMode !== 'none' ? isSelected : undefined\n };\n // Safari with VoiceOver on macOS misreads options with aria-labelledby or aria-label as simply \"text\".\n // We should not map slots to the label and description on Safari and instead just have VoiceOver read the textContent.\n // https://bugs.webkit.org/show_bug.cgi?id=209279\n if (!($frWMC$isMac() && $frWMC$isWebKit())) {\n optionProps['aria-label'] = props['aria-label'];\n optionProps['aria-labelledby'] = labelId;\n optionProps['aria-describedby'] = descriptionId;\n }\n if (isVirtualized) {\n optionProps['aria-posinset'] = state.collection.getItem(key).index + 1;\n optionProps['aria-setsize'] = $frWMC$getItemCount(state.collection);\n }\n let { itemProps: itemProps , isPressed: isPressed , hasAction: hasAction , allowsSelection: allowsSelection } = $frWMC$useSelectableItem({\n selectionManager: state.selectionManager,\n key: key,\n ref: ref,\n shouldSelectOnPressUp: shouldSelectOnPressUp,\n allowsDifferentPressOrigin: shouldSelectOnPressUp && shouldFocusOnHover,\n isVirtualized: isVirtualized,\n shouldUseVirtualFocus: shouldUseVirtualFocus,\n isDisabled: isDisabled,\n onAction: data.onAction ? ()=>data.onAction(key)\n : undefined\n });\n let { hoverProps: hoverProps } = $frWMC$useHover({\n isDisabled: isDisabled || !shouldFocusOnHover,\n onHoverStart () {\n if (!$frWMC$isFocusVisible()) {\n state.selectionManager.setFocused(true);\n state.selectionManager.setFocusedKey(key);\n }\n }\n });\n return {\n optionProps: {\n ...optionProps,\n ...$frWMC$mergeProps(itemProps, hoverProps),\n id: $b1f0cad8af73213b$export$9145995848b05025(state, key)\n },\n labelProps: {\n id: labelId\n },\n descriptionProps: {\n id: descriptionId\n },\n isFocused: isFocused,\n isSelected: isSelected,\n isDisabled: isDisabled,\n isPressed: isPressed,\n allowsSelection: allowsSelection,\n hasAction: hasAction\n };\n}\n\n\n\nfunction $af383d3bef1cfdc9$export$c3f9f39876e4bc7(props) {\n let { heading: heading , 'aria-label': ariaLabel } = props;\n let headingId = $frWMC$useId();\n return {\n itemProps: {\n role: 'presentation'\n },\n headingProps: heading ? {\n // Techincally, listbox cannot contain headings according to ARIA.\n // We hide the heading from assistive technology, and only use it\n // as a label for the nested group.\n id: headingId,\n 'aria-hidden': true\n } : {\n },\n groupProps: {\n role: 'group',\n 'aria-label': ariaLabel,\n 'aria-labelledby': heading ? headingId : undefined\n }\n };\n}\n\n\n\n\n\nexport {$c132121280ec012d$export$50eacbbf140a3141 as useListBox, $293f70390ea03370$export$497855f14858aa34 as useOption, $af383d3bef1cfdc9$export$c3f9f39876e4bc7 as useListBoxSection, $b1f0cad8af73213b$export$3585ede4d035bf14 as listData, $b1f0cad8af73213b$export$9145995848b05025 as getItemId};\n//# sourceMappingURL=module.js.map\n","import React, { memo, useRef, Fragment, useMemo } from 'react'\nimport styled, { css } from 'styled-components'\nimport { ListProps, ListState } from 'react-stately'\nimport { useListBox, useOption } from '@react-aria/listbox'\nimport { mergeProps } from '@react-aria/utils'\nimport { useFocusRing } from '@react-aria/focus'\nimport { px } from '@charcoal-ui/utils'\nimport Icon from '../Icon'\nimport { theme } from '../../styled'\n\nimport type { Node } from '@react-types/shared'\n\ntype ListMode = 'default' | 'separator'\nexport type ListboxProps<T> = Omit<ListProps<T>, 'children'> & {\n state: ListState<T>\n mode?: ListMode\n}\n\nconst Listbox = <T,>({\n state,\n mode = 'default',\n ...props\n}: ListboxProps<T>) => {\n const ref = useRef<HTMLUListElement>(null)\n\n const { listBoxProps } = useListBox(props, state, ref)\n const collection = useMemo(\n () =>\n [...state.collection].map((node, index, self) => ({\n node,\n first: index === 0,\n last: index === self.length - 1,\n })),\n [state.collection]\n )\n\n return (\n <ListboxRoot ref={ref} {...listBoxProps}>\n {collection.map(({ node, last }) => (\n <Fragment key={node.key}>\n <Option item={node} state={state} mode={mode} />\n {!last && mode === 'separator' && <Divider />}\n </Fragment>\n ))}\n </ListboxRoot>\n )\n}\nexport default memo(Listbox)\n\nconst ListboxRoot = styled.ul`\n padding-left: 0;\n margin: 0;\n box-sizing: border-box;\n list-style: none;\n\n ${theme((o) => [\n o.bg.background1,\n o.border.default,\n o.borderRadius(8),\n o.outline.default.focus,\n ])}\n`\n\nconst Divider = styled.div.attrs({ role: 'separator' })`\n display: flex;\n ${theme((o) => [o.padding.horizontal(8)])}\n\n &:before {\n content: '';\n display: block;\n width: 100%;\n height: 1px;\n background: #00000014;\n }\n`\n\ntype OptionProps<T> = {\n item: Node<T>\n state: ListState<T>\n mode?: ListMode\n}\n\nconst Option = <T,>({ item, state, mode }: OptionProps<T>) => {\n const ref = useRef<HTMLLIElement>(null)\n\n const { optionProps, isSelected } = useOption(item, state, ref)\n const { focusProps } = useFocusRing()\n\n return (\n <OptionRoot {...mergeProps(optionProps, focusProps)} ref={ref} mode={mode}>\n <OptionCheckIcon name=\"16/Check\" isSelected={isSelected} />\n <OptionText>{item.rendered}</OptionText>\n </OptionRoot>\n )\n}\n\nconst OptionRoot = styled.li<{ mode?: ListMode }>`\n display: flex;\n align-items: center;\n gap: ${({ theme }) => px(theme.spacing[4])};\n height: 40px;\n cursor: pointer;\n outline: none;\n\n ${({ mode }) =>\n theme((o) => [\n o.padding.horizontal(8),\n mode === 'separator' && o.padding.vertical(4),\n ])}\n\n &:focus {\n ${theme((o) => [o.bg.surface3])}\n }\n`\nconst OptionCheckIcon = styled(Icon)<{ isSelected: boolean }>`\n visibility: hidden;\n\n ${({ isSelected }) =>\n isSelected &&\n css`\n visibility: visible;\n `}\n`\nconst OptionText = styled.span`\n display: block;\n ${theme((o) => [o.typography(14)])}\n`\n","import { FocusScope } from '@react-aria/focus'\nimport { DismissButton, useOverlay } from '@react-aria/overlays'\nimport React, {\n FC,\n useRef,\n useMemo,\n PropsWithChildren,\n memo,\n CSSProperties,\n} from 'react'\nimport { mergeProps } from '@react-aria/utils'\n\ntype Props = PropsWithChildren<{\n open?: boolean\n onClose?: () => void\n style?: CSSProperties\n className?: string\n}>\n\nconst Popover: FC<Props> = ({ open, onClose, children, ...props }) => {\n const ref = useRef<HTMLDivElement>(null)\n\n const { overlayProps } = useOverlay(\n useMemo(\n () => ({\n isOpen: open,\n onClose,\n shouldCloseOnBlur: true,\n isDismissable: true,\n }),\n [onClose, open]\n ),\n ref\n )\n\n return (\n <FocusScope restoreFocus>\n <div {...mergeProps(overlayProps, props)} ref={ref}>\n {children}\n <DismissButton onDismiss={onClose} />\n </div>\n </FocusScope>\n )\n}\n\nexport default memo(Popover)\n","import React, { Key, useMemo, useRef } from 'react'\nimport styled from 'styled-components'\nimport { Item, useSelectState } from 'react-stately'\nimport { disabledSelector } from '@charcoal-ui/utils'\nimport { useVisuallyHidden } from '@react-aria/visually-hidden'\nimport { useSelect, HiddenSelect } from '@react-aria/select'\nimport { useButton } from '@react-aria/button'\nimport { SelectProps } from '@react-types/select'\nimport Listbox, { ListboxProps } from './Listbox'\nimport Popover from './Popover'\nimport Icon from '../Icon'\nimport FieldLabel from '../FieldLabel'\nimport { theme } from '../../styled'\n\nimport type { CollectionBase } from '@react-types/shared'\nimport type { ReactNode } from 'react'\n\ntype LabelProps = {\n readonly showLabel?: boolean\n readonly label: string\n readonly subLabel?: ReactNode\n readonly requiredText?: string\n}\n\ntype Empty = Record<string, unknown>\nexport type DropdownSelectorProps<T extends Empty = Empty> = LabelProps &\n Readonly<CollectionBase<T>> & {\n readonly id?: string\n readonly name?: string\n readonly autoComplete?: string\n readonly placeholder?: string\n readonly className?: string\n readonly disabled?: boolean\n readonly required?: boolean\n readonly invalid?: boolean\n readonly assertiveText?: string\n readonly value?: Key\n readonly defaultValue?: Key\n readonly open?: boolean\n readonly onOpenChange?: (isOpen?: boolean) => void\n readonly onChange?: (key: Key) => void\n readonly mode?: ListboxProps<T>['mode']\n }\n\nconst DropdownSelector = <T extends Record<string, unknown>>({\n open,\n className,\n label = '',\n requiredText = '',\n subLabel,\n assertiveText,\n autoComplete,\n invalid = false,\n disabled = false,\n required = false,\n showLabel = false,\n mode = 'default',\n ...props\n}: DropdownSelectorProps<T>) => {\n const { visuallyHiddenProps } = useVisuallyHidden()\n const triggerRef = useRef<HTMLButtonElement>(null)\n const selectProps = useMemo<SelectProps<T>>(\n () => ({\n ...props,\n label,\n isOpen: open,\n isDisabled: disabled,\n isRequired: required,\n errorMessage: invalid && assertiveText,\n validationState: invalid ? 'invalid' : 'valid',\n onSelectionChange: props.onChange,\n selectedKey: props.value,\n defaultSelectedKey: props.defaultValue,\n }),\n [assertiveText, disabled, invalid, label, open, props, required]\n )\n const state = useSelectState<T>(selectProps)\n\n const {\n labelProps,\n triggerProps,\n valueProps,\n menuProps,\n errorMessageProps,\n descriptionProps,\n } = useSelect<T>(selectProps, state, triggerRef)\n\n const { buttonProps } = useButton(triggerProps, triggerRef)\n\n const hasAssertiveText =\n assertiveText !== undefined && assertiveText.length > 0\n\n return (\n <DropdownSelectorRoot aria-disabled={disabled} className={className}>\n <DropdownFieldLabel\n label={label}\n required={required}\n requiredText={requiredText}\n subLabel={subLabel}\n {...labelProps}\n {...(!showLabel ? visuallyHiddenProps : {})}\n />\n <HiddenSelect\n state={state}\n triggerRef={triggerRef}\n label={label}\n name={props.name}\n isDisabled={disabled}\n autoComplete={autoComplete}\n />\n <DropdownButtonWrapper>\n <DropdownButton {...buttonProps} ref={triggerRef} invalid={invalid}>\n <DropdownButtonText {...valueProps}>\n {/*\n * react-stately の useSelectState から取得される selectedItem の型が常に\n * Node<T> であるが runtime では null が帰ってくることがある\n */}\n {/* eslint-disable-next-line @typescript-eslint/strict-boolean-expressions,@typescript-eslint/no-unnecessary-condition*/}\n {state.selectedItem\n ? state.selectedItem.rendered\n : props.placeholder}\n </DropdownButtonText>\n\n <Icon name=\"16/Menu\" />\n </DropdownButton>\n {state.isOpen && (\n <DropdownPopover open={state.isOpen} onClose={() => state.close()}>\n <Listbox {...menuProps} state={state} mode={mode} />\n </DropdownPopover>\n )}\n </DropdownButtonWrapper>\n\n {hasAssertiveText && (\n <AssertiveText\n invalid={invalid}\n {...(invalid ? errorMessageProps : descriptionProps)}\n >\n {assertiveText}\n </AssertiveText>\n )}\n </DropdownSelectorRoot>\n )\n}\n\nexport default DropdownSelector\nexport const DropdownSelectorItem = Item\n\nconst DropdownSelectorRoot = styled.div`\n position: relative;\n display: inline-block;\n\n ${disabledSelector} {\n cursor: default;\n ${theme((o) => o.disabled)}\n }\n`\n\nconst DropdownFieldLabel = styled(FieldLabel)`\n width: 100%;\n\n ${theme((o) => o.margin.bottom(8))}\n`\n\nconst DropdownButtonWrapper = styled.div`\n position: relative;\n`\n\nconst DropdownButton = styled.button<{ invalid: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n height: 40px;\n width: 288px;\n box-sizing: border-box;\n cursor: pointer;\n\n ${disabledSelector} {\n cursor: default;\n }\n\n ${({ invalid }) =>\n theme((o) => [\n o.border.default,\n o.padding.horizontal(8),\n o.outline.default.focus,\n o.bg.surface3,\n o.borderRadius(4),\n invalid && o.outline.assertive,\n ])}\n`\n\nconst DropdownButtonText = styled.span`\n text-align: left;\n\n ${theme((o) => [o.typography(14), o.font.text2])}\n`\n\nconst AssertiveText = styled.div<{ invalid: boolean }>`\n ${({ invalid }) =>\n theme((o) => [\n o.typography(14),\n o.margin.top(8),\n invalid && o.font.assertive,\n ])}\n`\n\nconst DropdownPopover = styled(Popover)`\n position: absolute;\n width: 100%;\n\n top: 100%;\n margin-top: 2px;\n`\n","import React, { createContext, useContext } from 'react'\nimport { RadioGroupState } from 'react-stately'\n\nconst RadioContext = createContext<RadioGroupState | null>(null)\n\ntype RadioProviderProps = React.PropsWithChildren<{\n value: RadioGroupState\n}>\nexport const RadioProvider: React.FC<RadioProviderProps> = ({\n value,\n children,\n}) => {\n return <RadioContext.Provider value={value}>{children}</RadioContext.Provider>\n}\nexport const useRadioContext = () => {\n const state = useContext(RadioContext)\n\n if (state === null)\n throw new Error('`<RadioProvider>` is not likely mounted.')\n\n return state\n}\n","import React, { forwardRef, memo, useMemo, useRef } from 'react'\nimport { useRadioGroupState } from 'react-stately'\nimport {\n AriaRadioGroupProps,\n AriaRadioProps,\n useRadio,\n useRadioGroup,\n} from '@react-aria/radio'\nimport styled from 'styled-components'\nimport { disabledSelector } from '@charcoal-ui/utils'\n\nimport { RadioProvider, useRadioContext } from './RadioGroupContext'\nimport { theme } from '../../styled'\n\ntype SegmentedControlItem = {\n label: React.ReactNode\n value: string\n disabled?: boolean\n}\n\nexport type SegmentedControlProps = {\n readonly id?: string\n readonly name?: string\n readonly disabled?: boolean\n readonly readonly?: boolean\n readonly required?: boolean\n\n readonly value?: string\n readonly defaultValue?: string\n\n readonly data: string[] | SegmentedControlItem[]\n\n readonly onChange?: (value: string) => void\n}\n\nconst SegmentedControl = forwardRef<HTMLDivElement, SegmentedControlProps>(\n function SegmentedControlInner(props, ref) {\n const ariaRadioGroupProps = useMemo<AriaRadioGroupProps>(\n () => ({\n ...props,\n isDisabled: props.disabled,\n isReadOnly: props.readonly,\n isRequired: props.required,\n }),\n [props]\n )\n const state = useRadioGroupState(ariaRadioGroupProps)\n const { radioGroupProps } = useRadioGroup(ariaRadioGroupProps, state)\n const segmentedControlItems = useMemo<SegmentedControlItem[]>(() => {\n return props.data.map((d) =>\n typeof d === 'string' ? { value: d, label: d } : d\n )\n }, [props.data])\n\n return (\n <SegmentedControlRoot ref={ref} {...radioGroupProps}>\n <RadioProvider value={state}>\n {segmentedControlItems.map((item) => (\n <Segmented\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n >\n {item.label}\n </Segmented>\n ))}\n </RadioProvider>\n </SegmentedControlRoot>\n )\n }\n)\n\nexport default memo(SegmentedControl)\n\ntype RadioProps = {\n value: string\n disabled?: boolean\n}\n\nconst Segmented: React.FC<RadioProps> = ({ children, ...props }) => {\n const state = useRadioContext()\n const ref = useRef<HTMLInputElement>(null)\n const ariaRadioProps = useMemo<AriaRadioProps>(\n () => ({ ...props, isDisabled: props.disabled }),\n [props]\n )\n\n const { inputProps, isDisabled, isSelected } = useRadio(\n ariaRadioProps,\n state,\n ref\n )\n\n return (\n <SegmentedRoot\n aria-disabled={isDisabled || state.isReadOnly}\n checked={isSelected}\n >\n <SegmentedInput {...inputProps} ref={ref} />\n <RadioLabel>\n <SegmentedLabelInner>{children}</SegmentedLabelInner>\n </RadioLabel>\n </SegmentedRoot>\n )\n}\n\nconst SegmentedControlRoot = styled.div`\n display: inline-flex;\n align-items: center;\n\n ${theme((o) => [o.bg.surface3, o.borderRadius(16)])}\n`\n\nconst SegmentedRoot = styled.label<{ checked?: boolean }>`\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer;\n height: 32px;\n\n ${disabledSelector} {\n cursor: default;\n }\n\n ${({ checked }) =>\n theme((o) => [\n o.padding.horizontal(16),\n o.borderRadius(16),\n o.disabled,\n checked === true && o.bg.brand,\n checked === true ? o.font.text5 : o.font.text2,\n ])}\n`\nconst SegmentedInput = styled.input`\n position: absolute;\n\n height: 0px;\n width: 0px;\n padding: 0;\n margin: 0;\n\n appearance: none;\n box-sizing: border-box;\n overflow: hidden;\n white-space: nowrap;\n opacity: 0;\n`\n\nconst RadioLabel = styled.div`\n background: transparent;\n display: flex;\n align-items: center;\n height: 22px;\n`\nconst SegmentedLabelInner = styled.div`\n ${theme((o) => [o.typography(14)])}\n`\n","import React, { forwardRef, memo, useMemo } from 'react'\nimport styled, { css } from 'styled-components'\nimport { useCheckbox } from '@react-aria/checkbox'\nimport { useObjectRef } from '@react-aria/utils'\nimport { useToggleState } from 'react-stately'\nimport { disabledSelector, px } from '@charcoal-ui/utils'\nimport { theme } from '../../styled'\n\nimport type { AriaCheckboxProps } from '@react-types/checkbox'\nimport Icon from '../Icon'\n\ntype CheckboxLabelProps =\n | {\n children: React.ReactNode\n }\n | {\n label: string\n }\n\nexport type CheckboxProps = CheckboxLabelProps & {\n readonly id?: string\n readonly name?: string\n\n readonly checked?: boolean\n readonly defaultChecked?: boolean\n readonly disabled?: boolean\n readonly readonly?: boolean\n\n readonly onClick?: () => void\n readonly onChange?: (isSelected: boolean) => void\n readonly onBlur?: () => void\n readonly onFocus?: () => void\n}\n\nconst Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n function CheckboxInner(props, ref) {\n const ariaCheckboxProps = useMemo<AriaCheckboxProps>(\n () => ({\n ...props,\n isSelected: props.checked,\n defaultSelected: props.defaultChecked,\n // children がいない場合は aria-label をつけないといけない\n 'aria-label': 'children' in props ? undefined : props.label,\n isDisabled: props.disabled,\n }),\n [props]\n )\n const state = useToggleState(ariaCheckboxProps)\n const objectRef = useObjectRef(ref)\n\n const { inputProps } = useCheckbox(ariaCheckboxProps, state, objectRef)\n const isDisabled = (props.disabled ?? false) || (props.readonly ?? false)\n\n return (\n <InputRoot aria-disabled={isDisabled}>\n <CheckboxInput type=\"checkbox\" {...inputProps} />\n <CheckboxInputOverlay aria-hidden={true} checked={inputProps.checked}>\n <Icon name=\"24/Check\" unsafeNonGuidelineScale={2 / 3} />\n </CheckboxInputOverlay>\n\n {'children' in props && <InputLabel>{props.children}</InputLabel>}\n </InputRoot>\n )\n }\n)\n\nexport default memo(Checkbox)\n\nconst hiddenCss = css`\n visibility: hidden;\n`\n\nconst InputRoot = styled.label`\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer;\n ${disabledSelector} {\n cursor: default;\n }\n\n gap: ${({ theme }) => px(theme.spacing[4])};\n ${theme((o) => [o.disabled])}\n`\n\nconst CheckboxInput = styled.input`\n &[type='checkbox'] {\n appearance: none;\n display: block;\n cursor: pointer;\n margin: 0;\n width: 20px;\n height: 20px;\n\n &:checked {\n ${theme((o) => o.bg.brand.hover.press)}\n }\n &:not(:checked) {\n border-width: 2px;\n border-style: solid;\n border-color: ${({ theme }) => theme.color.text4};\n }\n ${theme((o) => [o.outline.default.focus, o.borderRadius(4)])}\n }\n`\nconst CheckboxInputOverlay = styled.div<{ checked?: boolean }>`\n position: absolute;\n top: -2px;\n left: -2px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ${theme((o) => [o.width.px(24), o.height.px(24), o.font.text5])}\n\n ${({ checked }) => checked !== true && hiddenCss};\n`\n\nconst InputLabel = styled.div`\n ${theme((o) => [o.typography(14)])}\n`\n"],"names":["DefaultLink","React","forwardRef","ref","to","children","rest","DefaultValue","Link","ComponentAbstractionContext","createContext","ComponentAbstraction","components","useComponentAbstraction","useContext","unreachable","value","Error","arguments","length","JSON","stringify","theme","createTheme","styled","Clickable","props","onClick","disabled","undefined","Button","clickableCss","css","disabledSelector","button","A","span","variant","size","fixed","StyledButton","withConfig","shouldForwardProp","prop","attrs","styledProps","p","o","font","hover","press","bg","background","typography","bold","preserveHalfLeading","padding","horizontal","borderRadius","outline","focus","height","variantToProps","sizeToProps","IconButton","IconButtonInner","icon","validateIconSize","StyledIconButton","width","requiredIconSize","result","exec","iconSize","console","warn","Radio","forceChecked","RadioGroupContext","name","selected","isParentDisabled","readonly","hasError","onChange","warning","isSelected","isDisabled","isReadonly","handleChange","useCallback","e","currentTarget","RadioLabel","RadioRoot","label","px","spacing","RadioInput","input","type","text5","assertive","color","text4","brand","div","StyledRadioGroup","RadioGroup","className","next","MultiSelectGroupContext","MultiSelect","parentDisabled","parentOnChange","includes","event","HTMLInputElement","checked","Boolean","MultiSelectRoot","MultiSelectLabel","text1","MultiSelectInput","overlay","text3","surface4","MultiSelectInputOverlay","MultiSelectGroup","ariaLabel","payload","index","indexOf","slice","Array","from","Set","SwitchCheckbox","ariaSwitchProps","useMemo","state","useToggleState","useRef","useSwitch","inputProps","Label","LabelInner","SwitchInput","FieldLabel","style","required","requiredText","subLabel","labelProps","RequiredText","SubLabelClickable","FieldLabelWrapper","margin","left","mergeRefs","current","countCodePointsInString","string","TextField","multiline","SingleLineTextField","SingleLineTextFieldInner","showLabel","showCount","invalid","assistiveText","maxLength","prefix","suffix","useVisuallyHidden","visuallyHiddenProps","ariaRef","prefixRef","suffixRef","useState","count","setCount","prefixWidth","setPrefixWidth","suffixWidth","setSuffixWidth","nonControlled","useEffect","useTextField","inputElementType","isRequired","validationState","description","errorMessage","descriptionProps","errorMessageProps","prefixObserver","ResizeObserver","entries","contentRect","suffixObserver","observe","disconnect","MultiLineTextField","MultiLineTextFieldInner","autoHeight","rows","initialRows","textareaRef","setRows","syncHeight","textarea","match","TextFieldRoot","opacity","elementEffect","TextFieldLabel","bottom","StyledInputContainer","PrefixContainer","SuffixContainer","Affix","text2","StyledInput","extraLeftPadding","extraRightPadding","surface3","StyledTextareaContainer","StyledTextarea","noBottomPadding","SingleLineCounter","MultiLineCounter","AssistiveText","top","Icon","IconInner","scale","unsafeNonGuidelineScale","DEFAULT_Z_INDEX","Modal","zIndex","portalContainer","title","bottomSheet","isDismissable","onClose","isOpen","useOverlay","overlayProps","underlayProps","usePreventScroll","useModal","modalProps","useDialog","dialogProps","titleProps","useTheme","isMobile","useMedia","maxWidth","breakpoint","screen1","transitionEnabled","transition","useTransition","transform","backgroundColor","enter","leave","config","duration","easing","easings","easeOutQuart","showDismiss","item","OverlayContainer","FocusScope","close","ModalContext","ModalBackground","animated","ModalDialog","columnSystem","COLUMN_UNIT","GUTTER_UNIT","background1","ModalCrossButton","ModalTitle","ModalHeading","h3","ModalHeader","ModalHeaderRoot","StyledModalTitle","ModalAlign","ModalBody","ModalButtons","LoadingSpinner","transparent","LoadingSpinnerRoot","role","transparentize","scaleout","keyframes","once","LoadingSpinnerIcon","iconRef","useImperativeHandle","restart","dataset","resetAnimation","toVal","mix","k","y","str","isArray","i","tmp","x","$12uGp$useState","$12uGp$useRef","$12uGp$useSSRSafeId","$12uGp$useCallback","$12uGp$useEffect","$iFADg$react","$iFADg$useContext","$eCAIO$useLocale","$eCAIO$getFocusableTreeWalker","$eCAIO$focusWithoutScrolling","$eCAIO$useRef","$eCAIO$useEvent","$eCAIO$scrollIntoView","$eCAIO$useEffect","$eCAIO$focusSafely","$eCAIO$mergeProps","$frWMC$filterDOMProps","$frWMC$useSelectableList","$frWMC$useFocusWithin","$frWMC$useId","$frWMC$useLabel","$frWMC$mergeProps","Listbox","mode","useListBox","listBoxProps","collection","map","node","self","first","last","Fragment","key","memo","ListboxRoot","ul","border","Divider","Option","useOption","optionProps","useFocusRing","focusProps","mergeProps","rendered","OptionRoot","li","vertical","OptionCheckIcon","OptionText","Popover","open","shouldCloseOnBlur","DismissButton","DropdownSelector","assertiveText","autoComplete","triggerRef","selectProps","onSelectionChange","selectedKey","defaultSelectedKey","defaultValue","useSelectState","useSelect","triggerProps","valueProps","menuProps","useButton","buttonProps","hasAssertiveText","HiddenSelect","selectedItem","placeholder","DropdownSelectorItem","Item","DropdownSelectorRoot","DropdownFieldLabel","DropdownButtonWrapper","DropdownButton","DropdownButtonText","AssertiveText","DropdownPopover","RadioContext","RadioProvider","useRadioContext","SegmentedControl","SegmentedControlInner","ariaRadioGroupProps","isReadOnly","useRadioGroupState","useRadioGroup","radioGroupProps","segmentedControlItems","data","d","Segmented","ariaRadioProps","useRadio","SegmentedControlRoot","SegmentedRoot","SegmentedInput","SegmentedLabelInner","Checkbox","CheckboxInner","ariaCheckboxProps","defaultSelected","defaultChecked","objectRef","useObjectRef","useCheckbox","hiddenCss","InputRoot","CheckboxInput","CheckboxInputOverlay","InputLabel"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/core/ComponentAbstraction.tsx","../src/_lib/index.ts","../src/styled.ts","../src/components/Clickable/index.tsx","../src/components/Button/index.tsx","../src/components/IconButton/index.tsx","../src/components/Radio/index.tsx","../src/components/MultiSelect/context.ts","../src/components/MultiSelect/index.tsx","../src/components/Switch/index.tsx","../src/components/FieldLabel/index.tsx","../src/components/TextField/index.tsx","../src/components/Icon/index.tsx","../src/components/Modal/index.tsx","../src/components/Modal/ModalPlumbing.tsx","../src/components/LoadingSpinner/index.tsx","../../../node_modules/clsx/dist/clsx.m.js","../../../node_modules/@react-aria/utils/dist/module.js","../../../node_modules/@react-aria/i18n/dist/real-module.js","../../../node_modules/@react-aria/selection/dist/module.js","../../../node_modules/@react-aria/listbox/dist/module.js","../src/components/DropdownSelector/Listbox.tsx","../src/components/DropdownSelector/Popover.tsx","../src/components/DropdownSelector/index.tsx","../src/components/SegmentedControl/RadioGroupContext.tsx","../src/components/SegmentedControl/index.tsx","../src/components/Checkbox/index.tsx"],"sourcesContent":["import React, { useContext } from 'react'\n\nexport type LinkProps = {\n /**\n * リンクのURL\n */\n to: string\n} & Omit<React.ComponentPropsWithoutRef<'a'>, 'href'>\n\nexport const DefaultLink = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function DefaultLink({ to, children, ...rest }, ref) {\n return (\n <a href={to} ref={ref} {...rest}>\n {children}\n </a>\n )\n }\n)\n\ninterface Components {\n Link: React.ComponentType<React.ComponentPropsWithRef<typeof DefaultLink>>\n}\n\nconst DefaultValue: Components = {\n Link: DefaultLink,\n}\n\nconst ComponentAbstractionContext = React.createContext(DefaultValue)\n\ninterface Props {\n children: React.ReactNode\n components: Partial<Components>\n}\n\nexport default function ComponentAbstraction({ children, components }: Props) {\n return (\n <ComponentAbstractionContext.Provider\n value={{ ...DefaultValue, ...components }}\n >\n {children}\n </ComponentAbstractionContext.Provider>\n )\n}\n\nexport function useComponentAbstraction() {\n return useContext(ComponentAbstractionContext)\n}\n","/**\n * 今後ポートされる予定の汎用的な関数群\n */\n\n/**\n * Function used to assert a given code path is unreachable\n */\nexport function unreachable(): never\n/**\n * Function used to assert a given code path is unreachable.\n * Very useful for ensuring switches are exhaustive:\n *\n * ```ts\n * switch (a.type) {\n * case Types.A:\n * case Types.B:\n * break\n * default:\n * unreachable(a) // will cause a build error if there was\n * // a Types.C that was not checked\n * }\n * ```\n *\n * @param value Value to be asserted as unreachable\n */\n// NOTE: Uses separate overloads, _not_ `value?: never`, to not allow `undefined` to be passed\n// eslint-disable-next-line @typescript-eslint/unified-signatures\nexport function unreachable(value: never): never\nexport function unreachable(value?: never): never {\n throw new Error(\n arguments.length === 0\n ? 'unreachable'\n : `unreachable (${JSON.stringify(value)})`\n )\n}\n","import styled from 'styled-components'\nimport { createTheme } from '@charcoal-ui/styled'\nexport const theme = createTheme(styled)\n","import React from 'react'\nimport styled, { css } from 'styled-components'\nimport {\n LinkProps,\n useComponentAbstraction,\n} from '../../core/ComponentAbstraction'\nimport { disabledSelector } from '@charcoal-ui/utils'\n\ninterface BaseProps {\n /**\n * クリックの無効化\n */\n disabled?: boolean\n}\n\ninterface LinkBaseProps {\n /**\n * リンクのURL。指定するとbuttonタグではなくaタグとして描画される\n */\n to: string\n}\n\nexport type ClickableProps =\n | (BaseProps & Omit<React.ComponentPropsWithoutRef<'button'>, 'disabled'>)\n | (BaseProps & LinkBaseProps & Omit<LinkProps, 'to'>)\nexport type ClickableElement = HTMLButtonElement & HTMLAnchorElement\n\nconst Clickable = React.forwardRef<ClickableElement, ClickableProps>(\n function Clickable(props, ref) {\n const { Link } = useComponentAbstraction()\n if ('to' in props) {\n const { onClick, disabled = false, ...rest } = props\n return (\n <A<typeof Link>\n {...rest}\n as={disabled ? undefined : Link}\n onClick={disabled ? undefined : onClick}\n aria-disabled={disabled}\n ref={ref}\n />\n )\n } else {\n return <Button {...props} ref={ref} />\n }\n }\n)\nexport default Clickable\n\nconst clickableCss = css`\n /* Clickable style */\n cursor: pointer;\n\n ${disabledSelector} {\n cursor: default;\n }\n`\n\nconst Button = styled.button`\n /* Reset button appearance */\n appearance: none;\n background: transparent;\n padding: 0;\n border-style: none;\n outline: none;\n color: inherit;\n text-rendering: inherit;\n letter-spacing: inherit;\n word-spacing: inherit;\n\n &:focus {\n outline: none;\n }\n\n /* Change the font styles in all browsers. */\n font: inherit;\n\n /* Remove the margin in Firefox and Safari. */\n margin: 0;\n\n /* Show the overflow in Edge. */\n overflow: visible;\n\n /* Remove the inheritance of text transform in Firefox. */\n text-transform: none;\n\n /* Remove the inner border and padding in Firefox. */\n &::-moz-focus-inner {\n border-style: none;\n padding: 0;\n }\n\n ${clickableCss}\n`\n\nconst A = styled.span`\n /* Reset a-tag appearance */\n color: inherit;\n\n &:focus {\n outline: none;\n }\n\n .text {\n top: calc(1em + 2em);\n }\n\n ${clickableCss}\n`\n","import React from 'react'\nimport styled from 'styled-components'\nimport { unreachable } from '../../_lib'\nimport { theme } from '../../styled'\nimport Clickable, { ClickableElement, ClickableProps } from '../Clickable'\n\ntype Variant = 'Primary' | 'Default' | 'Overlay' | 'Danger' | 'Navigation'\ntype Size = 'S' | 'M'\n\ninterface StyledProps {\n /**\n * ボタンのスタイル\n */\n variant: Variant\n /**\n * ボタンのサイズ\n */\n size: Size\n /**\n * 幅を最大まで広げて描画\n */\n fixed: boolean\n}\n\nexport type ButtonProps = Partial<StyledProps> & ClickableProps\n\nconst Button = React.forwardRef<ClickableElement, ButtonProps>(function Button(\n {\n children,\n variant = 'Default',\n size = 'M',\n fixed = false,\n disabled = false,\n ...rest\n },\n ref\n) {\n return (\n <StyledButton\n {...rest}\n disabled={disabled}\n variant={variant}\n size={size}\n fixed={fixed}\n ref={ref}\n >\n {children}\n </StyledButton>\n )\n})\nexport default Button\n\nconst StyledButton = styled(Clickable)\n .withConfig<StyledProps>({\n shouldForwardProp(prop) {\n // fixed は <button> 要素に渡ってはいけない\n return prop !== 'fixed'\n },\n })\n .attrs<StyledProps, ReturnType<typeof styledProps>>(styledProps)`\n width: ${(p) => (p.fixed ? 'stretch' : 'min-content')};\n display: inline-grid;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n\n ${(p) =>\n theme((o) => [\n o.font[p.font].hover.press,\n o.bg[p.background].hover.press,\n o.typography(14).bold.preserveHalfLeading,\n o.padding.horizontal(p.padding),\n o.disabled,\n o.borderRadius('oval'),\n o.outline.default.focus,\n ])}\n\n /* よく考えたらheight=32って定義が存在しないな... */\n height: ${(p) => p.height}px;\n`\n\nfunction styledProps(props: StyledProps) {\n return {\n ...props,\n ...variantToProps(props.variant),\n ...sizeToProps(props.size),\n }\n}\n\nfunction variantToProps(variant: Variant) {\n switch (variant) {\n case 'Overlay':\n return { font: 'text5', background: 'surface4' } as const\n case 'Default':\n return { font: 'text2', background: 'surface3' } as const\n case 'Primary':\n return { font: 'text5', background: 'brand' } as const\n case 'Navigation':\n return { font: 'text5', background: 'surface6' } as const\n case 'Danger':\n return { font: 'text5', background: 'assertive' } as const\n default:\n return unreachable(variant)\n }\n}\n\nfunction sizeToProps(size: Size) {\n switch (size) {\n case 'S':\n return {\n height: 32,\n padding: 16,\n } as const\n case 'M':\n return {\n height: 40,\n padding: 24,\n } as const\n }\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { theme } from '../../styled'\nimport Clickable, { ClickableElement, ClickableProps } from '../Clickable'\nimport type { KnownIconType } from '@charcoal-ui/icons'\n\ntype Variant = 'Default' | 'Overlay'\ntype Size = 'XS' | 'S' | 'M'\n\ninterface StyledProps {\n readonly variant?: Variant\n readonly size?: Size\n readonly icon: keyof KnownIconType\n}\n\nexport type IconButtonProps = StyledProps & ClickableProps\n\nconst IconButton = React.forwardRef<ClickableElement, IconButtonProps>(\n function IconButtonInner(\n { variant = 'Default', size = 'M', icon, ...rest }: IconButtonProps,\n ref\n ) {\n validateIconSize(size, icon)\n return (\n <StyledIconButton {...rest} ref={ref} variant={variant} size={size}>\n <pixiv-icon name={icon} />\n </StyledIconButton>\n )\n }\n)\n\nexport default IconButton\n\nconst StyledIconButton = styled(Clickable).attrs<\n Required<StyledProps>,\n ReturnType<typeof styledProps>\n>(styledProps)`\n user-select: none;\n\n width: ${(p) => p.width}px;\n height: ${(p) => p.height}px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ${({ font, background }) =>\n theme((o) => [\n o.font[font],\n o.bg[background].hover.press,\n o.disabled,\n o.borderRadius('oval'),\n o.outline.default.focus,\n ])}\n`\n\nfunction styledProps(props: Required<StyledProps>) {\n return {\n ...props,\n ...variantToProps(props.variant),\n ...sizeToProps(props.size),\n }\n}\n\nfunction variantToProps(variant: Variant) {\n switch (variant) {\n case 'Default':\n return { font: 'text3', background: 'transparent' } as const\n case 'Overlay':\n return { font: 'text5', background: 'surface4' } as const\n }\n}\n\nfunction sizeToProps(size: Size) {\n switch (size) {\n case 'XS':\n return {\n width: 20,\n height: 20,\n }\n case 'S':\n return {\n width: 32,\n height: 32,\n }\n case 'M':\n return {\n width: 40,\n height: 40,\n }\n }\n}\n\n/**\n * validates matches of size and icon\n */\nfunction validateIconSize(size: Size, icon: keyof KnownIconType) {\n let requiredIconSize: string\n switch (size) {\n case 'XS':\n requiredIconSize = '16'\n break\n case 'S':\n case 'M':\n requiredIconSize = '24'\n break\n }\n // アイコン名は サイズ/名前\n const result = /^\\d*/u.exec(icon)\n if (result == null) {\n throw new Error('Invalid icon name')\n }\n const [iconSize] = result\n if (iconSize !== requiredIconSize) {\n // eslint-disable-next-line no-console\n console.warn(\n `IconButton with size \"${size}\" expect icon size \"${requiredIconSize}, but got \"${iconSize}\"`\n )\n }\n}\n","import React, { useCallback, useContext } from 'react'\nimport styled from 'styled-components'\nimport warning from 'warning'\nimport { theme } from '../../styled'\nimport { px } from '@charcoal-ui/utils'\n\nexport type RadioProps = React.PropsWithChildren<{\n value: string\n forceChecked?: boolean\n disabled?: boolean\n}>\n\nexport default function Radio({\n value,\n forceChecked = false,\n disabled = false,\n children,\n}: RadioProps) {\n const {\n name,\n selected,\n disabled: isParentDisabled,\n readonly,\n hasError,\n onChange,\n } = useContext(RadioGroupContext)\n\n warning(\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n name !== undefined,\n `\"name\" is not Provided for <Radio>. Perhaps you forgot to wrap with <RadioGroup> ?`\n )\n\n const isSelected = value === selected\n const isDisabled = disabled || isParentDisabled\n const isReadonly = readonly && !isSelected\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(e.currentTarget.value)\n },\n [onChange]\n )\n\n return (\n <RadioRoot aria-disabled={isDisabled || isReadonly}>\n <RadioInput\n name={name}\n value={value}\n checked={forceChecked || isSelected}\n hasError={hasError}\n onChange={handleChange}\n disabled={isDisabled || isReadonly}\n />\n {children != null && <RadioLabel>{children}</RadioLabel>}\n </RadioRoot>\n )\n}\n\nconst RadioRoot = styled.label`\n display: grid;\n grid-template-columns: auto 1fr;\n grid-gap: ${({ theme }) => px(theme.spacing[4])};\n align-items: center;\n cursor: pointer;\n\n ${theme((o) => [o.disabled])}\n`\n\nexport const RadioInput = styled.input.attrs({ type: 'radio' })<{\n hasError?: boolean\n}>`\n /** Make prior to browser default style */\n &[type='radio'] {\n appearance: none;\n display: block;\n box-sizing: border-box;\n\n padding: 6px;\n\n width: 20px;\n height: 20px;\n\n ${({ hasError = false }) =>\n theme((o) => [\n o.borderRadius('oval'),\n o.bg.text5.hover.press,\n hasError && o.outline.assertive,\n ])};\n\n &:not(:checked) {\n border-width: 2px;\n border-style: solid;\n border-color: ${({ theme }) => theme.color.text4};\n }\n\n &:checked {\n ${theme((o) => o.bg.brand.hover.press)}\n\n &::after {\n content: '';\n display: block;\n width: 8px;\n height: 8px;\n pointer-events: none;\n\n ${theme((o) => [o.bg.text5.hover.press, o.borderRadius('oval')])}\n }\n }\n\n ${theme((o) => o.outline.default.focus)}\n }\n`\n\nconst RadioLabel = styled.div`\n ${theme((o) => [o.typography(14)])}\n`\n\nexport type RadioGroupProps = React.PropsWithChildren<{\n className?: string\n value?: string\n label: string\n name: string\n onChange(next: string): void\n disabled?: boolean\n readonly?: boolean\n hasError?: boolean\n}>\n\n// TODO: use (or polyfill) flex gap\nconst StyledRadioGroup = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n grid-gap: ${({ theme }) => px(theme.spacing[8])};\n`\n\ninterface RadioGroupContext {\n name: string\n selected?: string\n disabled: boolean\n readonly: boolean\n hasError: boolean\n onChange: (next: string) => void\n}\n\nconst RadioGroupContext = React.createContext<RadioGroupContext>({\n name: undefined as never,\n selected: undefined,\n disabled: false,\n readonly: false,\n hasError: false,\n onChange() {\n throw new Error(\n 'Cannot find onChange() handler. Perhaps you forgot to wrap with <RadioGroup> ?'\n )\n },\n})\n\nexport function RadioGroup({\n className,\n value,\n label,\n name,\n onChange,\n disabled,\n readonly,\n hasError,\n children,\n}: RadioGroupProps) {\n const handleChange = useCallback(\n (next: string) => {\n onChange(next)\n },\n [onChange]\n )\n\n return (\n <RadioGroupContext.Provider\n value={{\n name,\n selected: value,\n disabled: disabled ?? false,\n readonly: readonly ?? false,\n hasError: hasError ?? false,\n onChange: handleChange,\n }}\n >\n <StyledRadioGroup\n role=\"radiogroup\"\n aria-orientation=\"vertical\"\n aria-label={label}\n aria-invalid={hasError}\n className={className}\n >\n {children}\n </StyledRadioGroup>\n </RadioGroupContext.Provider>\n )\n}\n","import { createContext } from 'react'\n\ntype MultiSelectGroupContext = {\n name: string\n selected: string[]\n disabled: boolean\n readonly: boolean\n hasError: boolean\n onChange: ({ value, selected }: { value: string; selected: boolean }) => void\n}\n\nexport const MultiSelectGroupContext = createContext<MultiSelectGroupContext>({\n name: undefined as never,\n selected: [],\n disabled: false,\n readonly: false,\n hasError: false,\n onChange() {\n throw new Error(\n 'Cannot find `onChange()` handler. Perhaps you forgot to wrap it with `<MultiSelectGroup />` ?'\n )\n },\n})\n","import React, { ChangeEvent, useCallback, useContext } from 'react'\nimport styled, { css } from 'styled-components'\nimport warning from 'warning'\nimport { theme } from '../../styled'\nimport { disabledSelector, px } from '@charcoal-ui/utils'\n\nimport { MultiSelectGroupContext } from './context'\n\nexport type MultiSelectProps = React.PropsWithChildren<{\n value: string\n forceChecked?: boolean\n disabled?: boolean\n variant?: 'default' | 'overlay'\n onChange?: (payload: { value: string; selected: boolean }) => void\n}>\n\nexport default function MultiSelect({\n value,\n forceChecked = false,\n disabled = false,\n onChange,\n variant = 'default',\n children,\n}: MultiSelectProps) {\n const {\n name,\n selected,\n disabled: parentDisabled,\n readonly,\n hasError,\n onChange: parentOnChange,\n } = useContext(MultiSelectGroupContext)\n\n warning(\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n name !== undefined,\n `\"name\" is not Provided for <MultiSelect>. Perhaps you forgot to wrap with <MultiSelectGroup> ?`\n )\n\n const isSelected = selected.includes(value) || forceChecked\n const isDisabled = disabled || parentDisabled || readonly\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (!(event.currentTarget instanceof HTMLInputElement)) {\n return\n }\n if (onChange) onChange({ value, selected: event.currentTarget.checked })\n parentOnChange({ value, selected: event.currentTarget.checked })\n },\n [onChange, parentOnChange, value]\n )\n\n return (\n <MultiSelectRoot aria-disabled={isDisabled}>\n <MultiSelectInput\n {...{\n name,\n value,\n hasError,\n }}\n checked={isSelected}\n disabled={isDisabled}\n onChange={handleChange}\n overlay={variant === 'overlay'}\n aria-invalid={hasError}\n />\n <MultiSelectInputOverlay\n overlay={variant === 'overlay'}\n hasError={hasError}\n aria-hidden={true}\n >\n <pixiv-icon name=\"24/Check\" unsafe-non-guideline-scale={16 / 24} />\n </MultiSelectInputOverlay>\n {Boolean(children) && <MultiSelectLabel>{children}</MultiSelectLabel>}\n </MultiSelectRoot>\n )\n}\n\nconst MultiSelectRoot = styled.label`\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: center;\n position: relative;\n cursor: pointer;\n ${disabledSelector} {\n cursor: default;\n }\n gap: ${({ theme }) => px(theme.spacing[4])};\n ${theme((o) => o.disabled)}\n`\n\nconst MultiSelectLabel = styled.div`\n display: flex;\n align-items: center;\n ${theme((o) => [o.typography(14), o.font.text1])}\n`\n\nconst MultiSelectInput = styled.input.attrs({ type: 'checkbox' })<{\n hasError: boolean\n overlay: boolean\n}>`\n &[type='checkbox'] {\n appearance: none;\n display: block;\n width: 20px;\n height: 20px;\n margin: 0;\n\n &:checked {\n ${theme((o) => o.bg.brand.hover.press)}\n }\n\n ${({ hasError, overlay }) =>\n theme((o) => [\n o.bg.text3.hover.press,\n o.borderRadius('oval'),\n hasError && !overlay && o.outline.assertive,\n overlay && o.bg.surface4,\n ])};\n }\n`\n\nconst MultiSelectInputOverlay = styled.div<{\n overlay: boolean\n hasError: boolean\n}>`\n position: absolute;\n top: -2px;\n left: -2px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ${({ hasError, overlay }) =>\n theme((o) => [\n o.width.px(24),\n o.height.px(24),\n o.borderRadius('oval'),\n o.font.text5,\n hasError && overlay && o.outline.assertive,\n ])}\n\n ${({ overlay }) =>\n overlay &&\n css`\n border-color: ${({ theme }) => theme.color.text5};\n border-width: 2px;\n border-style: solid;\n `}\n`\n\nexport type MultiSelectGroupProps = React.PropsWithChildren<{\n className?: string\n name: string\n ariaLabel: string\n selected: string[]\n onChange: (selected: string[]) => void\n disabled?: boolean\n readonly?: boolean\n hasError?: boolean\n}>\n\nexport function MultiSelectGroup({\n className,\n name,\n ariaLabel,\n selected,\n onChange,\n disabled = false,\n readonly = false,\n hasError = false,\n children,\n}: MultiSelectGroupProps) {\n const handleChange = useCallback(\n (payload: { value: string; selected: boolean }) => {\n const index = selected.indexOf(payload.value)\n\n if (payload.selected) {\n if (index < 0) {\n onChange([...selected, payload.value])\n }\n } else {\n if (index >= 0) {\n onChange([...selected.slice(0, index), ...selected.slice(index + 1)])\n }\n }\n },\n [onChange, selected]\n )\n\n return (\n <MultiSelectGroupContext.Provider\n value={{\n name,\n selected: Array.from(new Set(selected)),\n disabled,\n readonly,\n hasError,\n onChange: handleChange,\n }}\n >\n <div\n className={className}\n aria-label={ariaLabel}\n data-testid=\"SelectGroup\"\n >\n {children}\n </div>\n </MultiSelectGroupContext.Provider>\n )\n}\n","import { useSwitch } from '@react-aria/switch'\nimport type { AriaSwitchProps } from '@react-types/switch'\nimport React, { useRef, useMemo } from 'react'\nimport { useToggleState } from 'react-stately'\nimport styled from 'styled-components'\nimport { theme } from '../../styled'\nimport { disabledSelector, px } from '@charcoal-ui/utils'\n\nexport type SwitchProps = {\n name: string\n className?: string\n value?: string\n checked?: boolean\n disabled?: boolean\n onChange(checked: boolean): void\n} & (\n | // children か label は片方が必須\n {\n children: React.ReactNode\n }\n | {\n label: string\n }\n)\n\nexport default function SwitchCheckbox(props: SwitchProps) {\n const { disabled, className } = props\n\n const ariaSwitchProps: AriaSwitchProps = useMemo(\n () => ({\n ...props,\n\n // children がいない場合は aria-label をつけないといけない\n 'aria-label': 'children' in props ? undefined : props.label,\n isDisabled: props.disabled,\n isSelected: props.checked,\n }),\n [props]\n )\n\n const state = useToggleState(ariaSwitchProps)\n const ref = useRef<HTMLInputElement>(null)\n const {\n inputProps: { className: _className, type: _type, ...rest },\n } = useSwitch(ariaSwitchProps, state, ref)\n\n return (\n <Label className={className} aria-disabled={disabled}>\n <SwitchInput {...rest} ref={ref} />\n {'children' in props ? (\n // eslint-disable-next-line react/destructuring-assignment\n <LabelInner>{props.children}</LabelInner>\n ) : undefined}\n </Label>\n )\n}\n\nconst Label = styled.label`\n display: inline-grid;\n grid-template-columns: auto 1fr;\n gap: ${({ theme }) => px(theme.spacing[4])};\n cursor: pointer;\n outline: 0;\n\n ${theme((o) => o.disabled)}\n\n ${disabledSelector} {\n cursor: default;\n }\n`\n\nconst LabelInner = styled.div`\n ${theme((o) => o.typography(14))}\n`\n\nconst SwitchInput = styled.input.attrs({\n type: 'checkbox',\n})`\n &[type='checkbox'] {\n appearance: none;\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n width: 28px;\n border: 2px solid transparent;\n transition: box-shadow 0.2s, background-color 0.2s;\n cursor: inherit;\n ${theme((o) => [\n o.borderRadius(16),\n o.height.px(16),\n o.bg.text4.hover.press,\n o.outline.default.focus,\n ])}\n\n &::after {\n content: '';\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n width: 12px;\n height: 12px;\n transform: translateX(0);\n transition: transform 0.2s;\n ${theme((o) => [o.bg.text5.hover.press, o.borderRadius('oval')])}\n }\n\n &:checked {\n ${theme((o) => o.bg.brand.hover.press)}\n\n &::after {\n transform: translateX(12px);\n }\n }\n }\n`\n","import React from 'react'\nimport styled from 'styled-components'\nimport { createTheme } from '@charcoal-ui/styled'\n\nexport interface FieldLabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement> {\n readonly className?: string\n readonly label: string\n readonly subLabel?: React.ReactNode\n readonly required?: boolean\n // TODO: 翻訳用のContextで注入する\n readonly requiredText?: string\n}\n\nconst FieldLabel = React.forwardRef<HTMLLabelElement, FieldLabelProps>(\n function FieldLabel(\n {\n style,\n className,\n label,\n required = false,\n requiredText,\n subLabel,\n ...labelProps\n },\n ref\n ) {\n return (\n <FieldLabelWrapper style={style} className={className}>\n <Label ref={ref} {...labelProps}>\n {label}\n </Label>\n {required && <RequiredText>{requiredText}</RequiredText>}\n <SubLabelClickable>\n <span>{subLabel}</span>\n </SubLabelClickable>\n </FieldLabelWrapper>\n )\n }\n)\n\nexport default FieldLabel\n\nconst theme = createTheme(styled)\n\nconst Label = styled.label`\n ${theme((o) => [o.typography(14).bold, o.font.text1])}\n`\n\nconst RequiredText = styled.span`\n ${theme((o) => [o.typography(14), o.font.text3])}\n`\n\nconst SubLabelClickable = styled.div`\n ${theme((o) => [\n o.typography(14),\n o.font.text3.hover.press,\n o.outline.default.focus,\n ])}\n`\n\nconst FieldLabelWrapper = styled.div`\n display: inline-flex;\n align-items: center;\n\n > ${RequiredText} {\n ${theme((o) => o.margin.left(4))}\n }\n\n > ${SubLabelClickable} {\n ${theme((o) => o.margin.left('auto'))}\n }\n`\n","import { useTextField } from '@react-aria/textfield'\nimport { useVisuallyHidden } from '@react-aria/visually-hidden'\nimport React, {\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport styled, { css } from 'styled-components'\nimport FieldLabel, { FieldLabelProps } from '../FieldLabel'\nimport { createTheme } from '@charcoal-ui/styled'\n\nconst theme = createTheme(styled)\n\ninterface TextFieldBaseProps\n extends Pick<FieldLabelProps, 'label' | 'requiredText' | 'subLabel'> {\n readonly className?: string\n readonly defaultValue?: string\n readonly value?: string\n readonly onChange?: (value: string) => void\n readonly onKeyDown?: (event: React.KeyboardEvent<Element>) => void\n readonly onFocus?: (event: React.FocusEvent<Element>) => void\n readonly onBlur?: (event: React.FocusEvent<Element>) => void\n readonly showCount?: boolean\n readonly showLabel?: boolean\n readonly placeholder?: string\n readonly assistiveText?: string\n readonly disabled?: boolean\n readonly required?: boolean\n readonly invalid?: boolean\n readonly maxLength?: number\n /**\n * tab-indexがー1かどうか\n */\n readonly excludeFromTabOrder?: boolean\n}\n\nexport interface SingleLineTextFieldProps extends TextFieldBaseProps {\n readonly autoHeight?: never\n readonly multiline?: false\n readonly rows?: never\n readonly type?: string\n readonly prefix?: ReactNode\n readonly suffix?: ReactNode\n}\n\nexport interface MultiLineTextFieldProps extends TextFieldBaseProps {\n readonly autoHeight?: boolean\n readonly multiline: true\n readonly rows?: number\n readonly type?: never\n readonly prefix?: never\n readonly suffix?: never\n}\n\nexport type TextFieldProps = SingleLineTextFieldProps | MultiLineTextFieldProps\ntype TextFieldElement = HTMLInputElement & HTMLTextAreaElement\n\nfunction mergeRefs<T>(...refs: React.Ref<T>[]): React.RefCallback<T> {\n return (value) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(value)\n } else if (ref !== null) {\n ;(ref as React.MutableRefObject<T | null>).current = value\n }\n }\n }\n}\n\nfunction countCodePointsInString(string: string) {\n // [...string] とするとproduction buildで動かなくなる\n // cf. https://twitter.com/f_subal/status/1497214727511891972\n return Array.from(string).length\n}\n\nconst TextField = React.forwardRef<TextFieldElement, TextFieldProps>(\n function TextField(props, ref) {\n return props.multiline !== undefined && props.multiline ? (\n <MultiLineTextField ref={ref} {...props} />\n ) : (\n <SingleLineTextField ref={ref} {...props} />\n )\n }\n)\n\nexport default TextField\n\nconst SingleLineTextField = React.forwardRef<\n HTMLInputElement,\n SingleLineTextFieldProps\n>(function SingleLineTextFieldInner({ onChange, ...props }, forwardRef) {\n const {\n className,\n showLabel = false,\n showCount = false,\n label,\n requiredText,\n subLabel,\n disabled = false,\n required,\n invalid = false,\n assistiveText,\n maxLength,\n prefix = null,\n suffix = null,\n } = props\n\n const { visuallyHiddenProps } = useVisuallyHidden()\n const ariaRef = useRef<HTMLInputElement>(null)\n const prefixRef = useRef<HTMLSpanElement>(null)\n const suffixRef = useRef<HTMLSpanElement>(null)\n const [count, setCount] = useState(countCodePointsInString(props.value ?? ''))\n const [prefixWidth, setPrefixWidth] = useState(0)\n const [suffixWidth, setSuffixWidth] = useState(0)\n\n const nonControlled = props.value === undefined\n const handleChange = useCallback(\n (value: string) => {\n const count = countCodePointsInString(value)\n if (maxLength !== undefined && count > maxLength) {\n return\n }\n if (nonControlled) {\n setCount(count)\n }\n onChange?.(value)\n },\n [maxLength, nonControlled, onChange]\n )\n\n useEffect(() => {\n setCount(countCodePointsInString(props.value ?? ''))\n }, [props.value])\n\n const { inputProps, labelProps, descriptionProps, errorMessageProps } =\n useTextField(\n {\n inputElementType: 'input',\n isDisabled: disabled,\n isRequired: required,\n validationState: invalid ? 'invalid' : 'valid',\n description: !invalid && assistiveText,\n errorMessage: invalid && assistiveText,\n onChange: handleChange,\n ...props,\n },\n ariaRef\n )\n\n useEffect(() => {\n const prefixObserver = new ResizeObserver((entries) => {\n setPrefixWidth(entries[0].contentRect.width)\n })\n const suffixObserver = new ResizeObserver((entries) => {\n setSuffixWidth(entries[0].contentRect.width)\n })\n\n if (prefixRef.current !== null) {\n prefixObserver.observe(prefixRef.current)\n }\n if (suffixRef.current !== null) {\n suffixObserver.observe(suffixRef.current)\n }\n\n return () => {\n suffixObserver.disconnect()\n prefixObserver.disconnect()\n }\n }, [])\n\n return (\n <TextFieldRoot className={className} isDisabled={disabled}>\n <TextFieldLabel\n label={label}\n requiredText={requiredText}\n required={required}\n subLabel={subLabel}\n {...labelProps}\n {...(!showLabel ? visuallyHiddenProps : {})}\n />\n <StyledInputContainer>\n <PrefixContainer ref={prefixRef}>\n <Affix>{prefix}</Affix>\n </PrefixContainer>\n <StyledInput\n ref={mergeRefs(forwardRef, ariaRef)}\n invalid={invalid}\n extraLeftPadding={prefixWidth}\n extraRightPadding={suffixWidth}\n {...inputProps}\n />\n <SuffixContainer ref={suffixRef}>\n <Affix>{suffix}</Affix>\n {showCount && (\n <SingleLineCounter>\n {maxLength !== undefined ? `${count}/${maxLength}` : count}\n </SingleLineCounter>\n )}\n </SuffixContainer>\n </StyledInputContainer>\n {assistiveText != null && assistiveText.length !== 0 && (\n <AssistiveText\n invalid={invalid}\n {...(invalid ? errorMessageProps : descriptionProps)}\n >\n {assistiveText}\n </AssistiveText>\n )}\n </TextFieldRoot>\n )\n})\n\nconst MultiLineTextField = React.forwardRef<\n HTMLTextAreaElement,\n MultiLineTextFieldProps\n>(function MultiLineTextFieldInner({ onChange, ...props }, forwardRef) {\n const {\n className,\n showCount = false,\n showLabel = false,\n label,\n requiredText,\n subLabel,\n disabled = false,\n required,\n invalid = false,\n assistiveText,\n maxLength,\n autoHeight = false,\n rows: initialRows = 4,\n } = props\n\n const { visuallyHiddenProps } = useVisuallyHidden()\n const textareaRef = useRef<HTMLTextAreaElement>(null)\n const ariaRef = useRef<HTMLTextAreaElement>(null)\n const [count, setCount] = useState(countCodePointsInString(props.value ?? ''))\n const [rows, setRows] = useState(initialRows)\n\n const syncHeight = useCallback(\n (textarea: HTMLTextAreaElement) => {\n const rows = (`${textarea.value}\\n`.match(/\\n/gu)?.length ?? 0) || 1\n setRows(initialRows <= rows ? rows : initialRows)\n },\n [initialRows]\n )\n\n const nonControlled = props.value === undefined\n const handleChange = useCallback(\n (value: string) => {\n const count = countCodePointsInString(value)\n if (maxLength !== undefined && count > maxLength) {\n return\n }\n if (nonControlled) {\n setCount(count)\n }\n if (autoHeight && textareaRef.current !== null) {\n syncHeight(textareaRef.current)\n }\n onChange?.(value)\n },\n [autoHeight, maxLength, nonControlled, onChange, syncHeight]\n )\n\n useEffect(() => {\n setCount(countCodePointsInString(props.value ?? ''))\n }, [props.value])\n\n const { inputProps, labelProps, descriptionProps, errorMessageProps } =\n useTextField(\n {\n inputElementType: 'textarea',\n isDisabled: disabled,\n isRequired: required,\n validationState: invalid ? 'invalid' : 'valid',\n description: !invalid && assistiveText,\n errorMessage: invalid && assistiveText,\n onChange: handleChange,\n ...props,\n },\n ariaRef\n )\n\n useEffect(() => {\n if (autoHeight && textareaRef.current !== null) {\n syncHeight(textareaRef.current)\n }\n }, [autoHeight, syncHeight])\n\n return (\n <TextFieldRoot className={className} isDisabled={disabled}>\n <TextFieldLabel\n label={label}\n requiredText={requiredText}\n required={required}\n subLabel={subLabel}\n {...labelProps}\n {...(!showLabel ? visuallyHiddenProps : {})}\n />\n <StyledTextareaContainer\n invalid={invalid}\n rows={showCount ? rows + 1 : rows}\n >\n <StyledTextarea\n ref={mergeRefs(textareaRef, forwardRef, ariaRef)}\n rows={rows}\n noBottomPadding={showCount}\n {...inputProps}\n />\n {showCount && (\n <MultiLineCounter>\n {maxLength !== undefined ? `${count}/${maxLength}` : count}\n </MultiLineCounter>\n )}\n </StyledTextareaContainer>\n {assistiveText != null && assistiveText.length !== 0 && (\n <AssistiveText\n invalid={invalid}\n {...(invalid ? errorMessageProps : descriptionProps)}\n >\n {assistiveText}\n </AssistiveText>\n )}\n </TextFieldRoot>\n )\n})\n\nconst TextFieldRoot = styled.div<{ isDisabled: boolean }>`\n display: flex;\n flex-direction: column;\n\n ${(p) => p.isDisabled && { opacity: p.theme.elementEffect.disabled.opacity }}\n`\n\nconst TextFieldLabel = styled(FieldLabel)`\n ${theme((o) => o.margin.bottom(8))}\n`\n\nconst StyledInputContainer = styled.div`\n height: 40px;\n display: grid;\n position: relative;\n`\n\nconst PrefixContainer = styled.span`\n position: absolute;\n top: 50%;\n left: 8px;\n transform: translateY(-50%);\n`\n\nconst SuffixContainer = styled.span`\n position: absolute;\n top: 50%;\n right: 8px;\n transform: translateY(-50%);\n\n display: flex;\n gap: 8px;\n`\n\nconst Affix = styled.span`\n user-select: none;\n\n ${theme((o) => [o.typography(14).preserveHalfLeading, o.font.text2])}\n`\n\nconst StyledInput = styled.input<{\n invalid: boolean\n extraLeftPadding: number\n extraRightPadding: number\n}>`\n border: none;\n box-sizing: border-box;\n outline: none;\n font-family: inherit;\n\n /* Prevent zooming for iOS Safari */\n transform-origin: top left;\n transform: scale(0.875);\n width: calc(100% / 0.875);\n height: calc(100% / 0.875);\n font-size: calc(14px / 0.875);\n line-height: calc(22px / 0.875);\n padding-left: calc((8px + ${(p) => p.extraLeftPadding}px) / 0.875);\n padding-right: calc((8px + ${(p) => p.extraRightPadding}px) / 0.875);\n border-radius: calc(4px / 0.875);\n\n /* Display box-shadow for iOS Safari */\n appearance: none;\n\n ${(p) =>\n theme((o) => [\n o.bg.surface3.hover,\n o.outline.default.focus,\n p.invalid && o.outline.assertive,\n o.font.text2,\n ])}\n\n &::placeholder {\n ${theme((o) => o.font.text3)}\n }\n`\n\nconst StyledTextareaContainer = styled.div<{ rows: number; invalid: boolean }>`\n position: relative;\n overflow: hidden;\n padding: 0 8px;\n\n ${(p) =>\n theme((o) => [\n o.bg.surface3.hover,\n p.invalid && o.outline.assertive,\n o.font.text2,\n o.borderRadius(4),\n ])}\n\n &:focus-within {\n ${(p) =>\n theme((o) => (p.invalid ? o.outline.assertive : o.outline.default))}\n }\n\n ${({ rows }) => css`\n height: calc(22px * ${rows} + 18px);\n `};\n`\n\nconst StyledTextarea = styled.textarea<{ noBottomPadding: boolean }>`\n border: none;\n outline: none;\n resize: none;\n font-family: inherit;\n color: inherit;\n\n /* Prevent zooming for iOS Safari */\n transform-origin: top left;\n transform: scale(0.875);\n width: calc(100% / 0.875);\n font-size: calc(14px / 0.875);\n line-height: calc(22px / 0.875);\n padding: calc(9px / 0.875) 0 ${(p) => (p.noBottomPadding ? 0 : '')};\n\n ${({ rows = 1 }) => css`\n height: calc(22px / 0.875 * ${rows});\n `};\n\n /* Display box-shadow for iOS Safari */\n appearance: none;\n\n background: none;\n\n &::placeholder {\n ${theme((o) => o.font.text3)}\n }\n\n /* Hide scrollbar for Chrome, Safari and Opera */\n &::-webkit-scrollbar {\n display: none;\n }\n /* Hide scrollbar for IE, Edge and Firefox */\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n`\n\nconst SingleLineCounter = styled.span`\n ${theme((o) => [o.typography(14).preserveHalfLeading, o.font.text3])}\n`\n\nconst MultiLineCounter = styled.span`\n position: absolute;\n bottom: 9px;\n right: 8px;\n\n ${theme((o) => [o.typography(14).preserveHalfLeading, o.font.text3])}\n`\n\nconst AssistiveText = styled.p<{ invalid: boolean }>`\n ${(p) =>\n theme((o) => [\n o.typography(14),\n o.margin.top(8),\n o.margin.bottom(0),\n o.font[p.invalid ? 'assertive' : 'text1'],\n ])}\n`\n","import React from 'react'\n\nimport '@charcoal-ui/icons'\nimport type { PixivIcon, Props } from '@charcoal-ui/icons'\n\nexport interface OwnProps {\n unsafeNonGuidelineScale?: number\n className?: string\n}\n\nexport interface IconProps\n extends OwnProps,\n React.PropsWithoutRef<\n Omit<Props, 'class' | 'unsafe-non-guideline-scale' | 'css'>\n > {}\n\nconst Icon = React.forwardRef<PixivIcon, IconProps>(function IconInner(\n { name, scale, unsafeNonGuidelineScale, className, ...rest },\n ref\n) {\n return (\n <pixiv-icon\n ref={ref}\n name={name}\n scale={scale}\n unsafe-non-guideline-scale={unsafeNonGuidelineScale}\n class={className}\n {...rest}\n />\n )\n})\n\nexport default Icon\n","import React, { useContext, useRef } from 'react'\nimport {\n AriaModalOverlayProps,\n Overlay,\n useModalOverlay,\n useOverlay,\n usePreventScroll,\n} from '@react-aria/overlays'\nimport styled, { css, useTheme } from 'styled-components'\nimport { theme } from '../../styled'\nimport { FocusScope } from '@react-aria/focus'\nimport { useDialog } from '@react-aria/dialog'\nimport { AriaDialogProps } from '@react-types/dialog'\nimport { columnSystem, COLUMN_UNIT, GUTTER_UNIT } from '@charcoal-ui/foundation'\nimport { unreachable } from '../../_lib'\nimport { maxWidth } from '@charcoal-ui/utils'\nimport { useMedia } from '@charcoal-ui/styled'\nimport { animated, useTransition, easings } from 'react-spring'\nimport Button, { ButtonProps } from '../Button'\nimport IconButton from '../IconButton'\n\nexport type ModalProps = AriaModalOverlayProps &\n AriaDialogProps & {\n children: React.ReactNode\n zIndex?: number\n title: string\n size?: 'S' | 'M' | 'L'\n bottomSheet?: boolean | 'full'\n isOpen: boolean\n onClose: () => void\n\n // NOTICE: デフォルト値を与えてはならない\n // (たとえば document.body をデフォルト値にすると SSR できなくなる)\n portalContainer?: HTMLElement\n }\n\nconst DEFAULT_Z_INDEX = 10\n\nexport default function Modal({\n children,\n zIndex = DEFAULT_Z_INDEX,\n portalContainer,\n ...props\n}: ModalProps) {\n const {\n title,\n size = 'M',\n bottomSheet = false,\n isDismissable,\n onClose,\n isOpen = false,\n } = props\n\n const ref = useRef<HTMLDivElement>(null)\n const { overlayProps, underlayProps } = useOverlay(props, ref)\n\n usePreventScroll()\n const { modalProps } = useModalOverlay(\n props,\n {\n close: onClose,\n isOpen: isOpen,\n // these props are not used actually.\n // https://github.com/adobe/react-spectrum/blob/df14e3fb129b94b310f0397a701b83f006b51dfe/packages/%40react-aria/overlays/src/useModalOverlay.ts\n open: () => {\n // nope\n },\n setOpen: () => {\n // nope\n },\n toggle: () => {\n // nope\n },\n },\n ref\n )\n\n const { dialogProps, titleProps } = useDialog(props, ref)\n\n const theme = useTheme()\n const isMobile = useMedia(maxWidth(theme.breakpoint.screen1)) ?? false\n const transitionEnabled = isMobile && bottomSheet !== false\n const transition = useTransition(isOpen, {\n from: {\n transform: 'translateY(100%)',\n backgroundColor: 'rgba(0, 0, 0, 0)',\n },\n enter: {\n transform: 'translateY(0%)',\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n },\n leave: {\n transform: 'translateY(100%)',\n backgroundColor: 'rgba(0, 0, 0, 0)',\n },\n config: transitionEnabled\n ? { duration: 400, easing: easings.easeOutQuart }\n : { duration: 0 },\n })\n const showDismiss = !isMobile || bottomSheet !== true\n\n return transition(\n ({ backgroundColor, transform }, item) =>\n item && (\n <Overlay>\n <ModalBackground\n zIndex={zIndex}\n {...underlayProps}\n style={transitionEnabled ? { backgroundColor } : {}}\n >\n <FocusScope contain restoreFocus autoFocus>\n <ModalDialog\n ref={ref}\n {...overlayProps}\n {...modalProps}\n {...dialogProps}\n style={transitionEnabled ? { transform } : {}}\n size={size}\n bottomSheet={bottomSheet}\n >\n <ModalContext.Provider\n value={{ titleProps, title, close: onClose, showDismiss }}\n >\n {children}\n {isDismissable === true && (\n <ModalCrossButton\n size=\"S\"\n icon=\"24/Close\"\n onClick={onClose}\n />\n )}\n </ModalContext.Provider>\n </ModalDialog>\n </FocusScope>\n </ModalBackground>\n </Overlay>\n )\n )\n}\n\nconst ModalContext = React.createContext<{\n titleProps: React.HTMLAttributes<HTMLElement>\n title: string\n close?: () => void\n showDismiss: boolean\n}>({\n titleProps: {},\n title: '',\n close: undefined,\n showDismiss: true,\n})\n\nconst ModalBackground = animated(styled.div<{ zIndex: number }>`\n z-index: ${({ zIndex }) => zIndex};\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n ${theme((o) => [o.bg.surface4])}\n`)\n\nconst ModalDialog = animated(styled.div<{\n size: 'S' | 'M' | 'L'\n bottomSheet: boolean | 'full'\n}>`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: ${(p) =>\n p.size === 'S'\n ? columnSystem(3, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2\n : p.size === 'M'\n ? columnSystem(4, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2\n : // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n p.size === 'L'\n ? columnSystem(6, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2\n : unreachable(p.size)}px;\n\n ${theme((o) => [o.bg.background1, o.borderRadius(24)])}\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n ${(p) =>\n p.bottomSheet === 'full'\n ? css`\n top: auto;\n bottom: 0;\n left: 0;\n transform: none;\n border-radius: 0;\n width: 100%;\n height: 100%;\n `\n : p.bottomSheet\n ? css`\n top: auto;\n bottom: 0;\n left: 0;\n transform: none;\n border-radius: 0;\n width: 100%;\n `\n : css`\n width: calc(100% - 48px);\n `}\n }\n`)\n\nconst ModalCrossButton = styled(IconButton)`\n position: absolute;\n top: 8px;\n right: 8px;\n\n ${theme((o) => [o.font.text3.hover.press])}\n`\n\nexport function ModalTitle(props: React.HTMLAttributes<HTMLHeadingElement>) {\n const { titleProps, title } = useContext(ModalContext)\n return (\n <ModalHeading {...titleProps} {...props}>\n {title}\n </ModalHeading>\n )\n}\n\nconst ModalHeading = styled.h3`\n margin: 0;\n font-weight: inherit;\n font-size: inherit;\n`\n\nexport function ModalDismissButton({ children, ...props }: ButtonProps) {\n const { close, showDismiss } = useContext(ModalContext)\n\n if (!showDismiss) {\n return null\n }\n\n return (\n <Button {...props} onClick={close} fixed>\n {children}\n </Button>\n )\n}\n","import React from 'react'\nimport { ModalTitle } from '.'\nimport styled from 'styled-components'\nimport { theme } from '../../styled'\nimport { maxWidth } from '@charcoal-ui/utils'\n\nexport function ModalHeader() {\n return (\n <ModalHeaderRoot>\n <StyledModalTitle />\n </ModalHeaderRoot>\n )\n}\n\nconst ModalHeaderRoot = styled.div`\n height: 64px;\n display: grid;\n align-content: center;\n justify-content: center;\n`\n\nconst StyledModalTitle = styled(ModalTitle)`\n ${theme((o) => [o.font.text1, o.typography(16).bold])}\n`\n\nexport const ModalAlign = styled.div`\n ${theme((o) => [o.padding.horizontal(24)])}\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n ${theme((o) => [o.padding.horizontal(16)])}\n }\n`\n\nexport const ModalBody = styled.div`\n ${theme((o) => [o.padding.bottom(40)])}\n`\n\nexport const ModalButtons = styled.div`\n display: grid;\n grid-auto-flow: row;\n grid-row-gap: 8px;\n ${theme((o) => [o.padding.horizontal(24).top(16)])}\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n ${theme((o) => [o.padding.horizontal(16)])}\n }\n`\n","import { transparentize } from 'polished'\nimport React, { useImperativeHandle, useRef } from 'react'\nimport styled, { keyframes } from 'styled-components'\n\nexport default function LoadingSpinner({\n size = 48,\n padding = 16,\n transparent = false,\n}) {\n return (\n <LoadingSpinnerRoot size={size} padding={padding} transparent={transparent}>\n <LoadingSpinnerIcon />\n </LoadingSpinnerRoot>\n )\n}\n\nconst LoadingSpinnerRoot = styled.div.attrs({ role: 'progressbar' })<{\n size: number\n padding: number\n transparent: boolean\n}>`\n margin: auto;\n padding: ${(props) => props.padding}px;\n border-radius: 8px;\n font-size: ${(props) => props.size}px;\n width: ${(props) => props.size}px;\n height: ${(props) => props.size}px;\n background-color: ${({ theme, transparent }) =>\n transparent\n ? 'transparent'\n : transparentize(0.32, theme.color.background1)};\n color: ${({ theme }) => theme.color.text4};\n`\n\nconst scaleout = keyframes`\n from {\n transform: scale(0);\n opacity: 1;\n }\n\n to {\n transform: scale(1);\n opacity: 0;\n }\n`\n\nconst Icon = styled.div.attrs({ role: 'presentation' })<{ once: boolean }>`\n width: 1em;\n height: 1em;\n border-radius: 1em;\n background-color: currentColor;\n animation: ${scaleout} 1s both ease-out;\n animation-iteration-count: ${(p) => (p.once ? 1 : 'infinite')};\n\n &[data-reset-animation] {\n animation: none;\n }\n`\n\ninterface Props {\n once?: boolean\n}\n\nexport interface LoadingSpinnerIconHandler {\n restart(): void\n}\n\nexport const LoadingSpinnerIcon = React.forwardRef<\n LoadingSpinnerIconHandler,\n Props\n>(function LoadingSpinnerIcon({ once = false }, ref) {\n const iconRef = useRef<HTMLDivElement>(null)\n\n useImperativeHandle(ref, () => ({\n restart: () => {\n if (!iconRef.current) {\n return\n }\n iconRef.current.dataset.resetAnimation = 'true'\n // Force reflow hack!\n void iconRef.current.offsetWidth\n delete iconRef.current.dataset.resetAnimation\n },\n }))\n\n return <Icon ref={iconRef} once={once} />\n})\n","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","import {clamp as $4507461a1b870123$re_export$clamp, snapValueToStep as $4507461a1b870123$re_export$snapValueToStep} from \"@react-stately/utils\";\nimport $12uGp$react, {useState as $12uGp$useState, useRef as $12uGp$useRef, useCallback as $12uGp$useCallback, useEffect as $12uGp$useEffect} from \"react\";\nimport {useSSRSafeId as $12uGp$useSSRSafeId} from \"@react-aria/ssr\";\nimport $12uGp$clsx from \"clsx\";\n\n\n\nconst $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c = typeof window !== 'undefined' ? $12uGp$react.useLayoutEffect : ()=>{\n};\n\n\n\n\nlet $bdb11010cef70236$var$idsUpdaterMap = new Map();\nfunction $bdb11010cef70236$export$f680877a34711e37(defaultId) {\n let [value, setValue] = $12uGp$useState(defaultId);\n let nextId = $12uGp$useRef(null);\n let res = $12uGp$useSSRSafeId(value);\n let updateValue = $12uGp$useCallback((val)=>{\n nextId.current = val;\n }, []);\n $bdb11010cef70236$var$idsUpdaterMap.set(res, updateValue);\n $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c(()=>{\n let r = res;\n return ()=>{\n $bdb11010cef70236$var$idsUpdaterMap.delete(r);\n };\n }, [\n res\n ]);\n // This cannot cause an infinite loop because the ref is updated first.\n // eslint-disable-next-line\n $12uGp$useEffect(()=>{\n let newId = nextId.current;\n if (newId) {\n nextId.current = null;\n setValue(newId);\n }\n });\n return res;\n}\nfunction $bdb11010cef70236$export$cd8c9cb68f842629(idA, idB) {\n if (idA === idB) return idA;\n let setIdA = $bdb11010cef70236$var$idsUpdaterMap.get(idA);\n if (setIdA) {\n setIdA(idB);\n return idB;\n }\n let setIdB = $bdb11010cef70236$var$idsUpdaterMap.get(idB);\n if (setIdB) {\n setIdB(idA);\n return idA;\n }\n return idB;\n}\nfunction $bdb11010cef70236$export$b4cc09c592e8fdb8(depArray = []) {\n let id = $bdb11010cef70236$export$f680877a34711e37();\n let [resolvedId, setResolvedId] = $1dbecbe27a04f9af$export$14d238f342723f25(id);\n let updateId = $12uGp$useCallback(()=>{\n setResolvedId(function*() {\n yield id;\n yield document.getElementById(id) ? id : undefined;\n });\n }, [\n id,\n setResolvedId\n ]);\n $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c(updateId, [\n id,\n updateId,\n ...depArray\n ]);\n return resolvedId;\n}\n\n\nfunction $ff5963eb1fccf552$export$e08e3b67e392101e(...callbacks) {\n return (...args)=>{\n for (let callback of callbacks)if (typeof callback === 'function') callback(...args);\n };\n}\n\n\n\n\n\nfunction $3ef42575df84b30b$export$9d1611c77c2fe928(...args) {\n // Start with a base clone of the first argument. This is a lot faster than starting\n // with an empty object and adding properties as we go.\n let result = {\n ...args[0]\n };\n for(let i = 1; i < args.length; i++){\n let props = args[i];\n for(let key in props){\n let a = result[key];\n let b = props[key];\n // Chain events\n if (typeof a === 'function' && typeof b === 'function' && // This is a lot faster than a regex.\n key[0] === 'o' && key[1] === 'n' && key.charCodeAt(2) >= /* 'A' */ 65 && key.charCodeAt(2) <= /* 'Z' */ 90) result[key] = $ff5963eb1fccf552$export$e08e3b67e392101e(a, b);\n else if ((key === 'className' || key === 'UNSAFE_className') && typeof a === 'string' && typeof b === 'string') result[key] = $12uGp$clsx(a, b);\n else if (key === 'id' && a && b) result.id = $bdb11010cef70236$export$cd8c9cb68f842629(a, b);\n else result[key] = b !== undefined ? b : a;\n }\n }\n return result;\n}\n\n\nfunction $5dc95899b306f630$export$c9058316764c140e(...refs) {\n return (value)=>{\n for (let ref of refs){\n if (typeof ref === 'function') ref(value);\n else if (ref != null) ref.current = value;\n }\n };\n}\n\n\nconst $65484d02dcb7eb3e$var$DOMPropNames = new Set([\n 'id'\n]);\nconst $65484d02dcb7eb3e$var$labelablePropNames = new Set([\n 'aria-label',\n 'aria-labelledby',\n 'aria-describedby',\n 'aria-details'\n]);\nconst $65484d02dcb7eb3e$var$propRe = /^(data-.*)$/;\nfunction $65484d02dcb7eb3e$export$457c3d6518dd4c6f(props, opts = {\n}) {\n let { labelable: labelable , propNames: propNames } = opts;\n let filteredProps = {\n };\n for(const prop in props)if (Object.prototype.hasOwnProperty.call(props, prop) && ($65484d02dcb7eb3e$var$DOMPropNames.has(prop) || labelable && $65484d02dcb7eb3e$var$labelablePropNames.has(prop) || (propNames === null || propNames === void 0 ? void 0 : propNames.has(prop)) || $65484d02dcb7eb3e$var$propRe.test(prop))) filteredProps[prop] = props[prop];\n return filteredProps;\n}\n\n\nfunction $7215afc6de606d6b$export$de79e2c695e052f3(element) {\n if ($7215afc6de606d6b$var$supportsPreventScroll()) element.focus({\n preventScroll: true\n });\n else {\n let scrollableElements = $7215afc6de606d6b$var$getScrollableElements(element);\n element.focus();\n $7215afc6de606d6b$var$restoreScrollPosition(scrollableElements);\n }\n}\nlet $7215afc6de606d6b$var$supportsPreventScrollCached = null;\nfunction $7215afc6de606d6b$var$supportsPreventScroll() {\n if ($7215afc6de606d6b$var$supportsPreventScrollCached == null) {\n $7215afc6de606d6b$var$supportsPreventScrollCached = false;\n try {\n var focusElem = document.createElement('div');\n focusElem.focus({\n get preventScroll () {\n $7215afc6de606d6b$var$supportsPreventScrollCached = true;\n return true;\n }\n });\n } catch (e) {\n // Ignore\n }\n }\n return $7215afc6de606d6b$var$supportsPreventScrollCached;\n}\nfunction $7215afc6de606d6b$var$getScrollableElements(element) {\n var parent = element.parentNode;\n var scrollableElements = [];\n var rootScrollingElement = document.scrollingElement || document.documentElement;\n while(parent instanceof HTMLElement && parent !== rootScrollingElement){\n if (parent.offsetHeight < parent.scrollHeight || parent.offsetWidth < parent.scrollWidth) scrollableElements.push({\n element: parent,\n scrollTop: parent.scrollTop,\n scrollLeft: parent.scrollLeft\n });\n parent = parent.parentNode;\n }\n if (rootScrollingElement instanceof HTMLElement) scrollableElements.push({\n element: rootScrollingElement,\n scrollTop: rootScrollingElement.scrollTop,\n scrollLeft: rootScrollingElement.scrollLeft\n });\n return scrollableElements;\n}\nfunction $7215afc6de606d6b$var$restoreScrollPosition(scrollableElements) {\n for (let { element: element , scrollTop: scrollTop , scrollLeft: scrollLeft } of scrollableElements){\n element.scrollTop = scrollTop;\n element.scrollLeft = scrollLeft;\n }\n}\n\n\nfunction $ab71dadb03a6fb2e$export$622cea445a1c5b7d(element, reverse, orientation = 'horizontal') {\n let rect = element.getBoundingClientRect();\n if (reverse) return orientation === 'horizontal' ? rect.right : rect.bottom;\n return orientation === 'horizontal' ? rect.left : rect.top;\n}\n\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // We store a global list of elements that are currently transitioning,\n// mapped to a set of CSS properties that are transitioning for that element.\n// This is necessary rather than a simple count of transitions because of browser\n// bugs, e.g. Chrome sometimes fires both transitionend and transitioncancel rather\n// than one or the other. So we need to track what's actually transitioning so that\n// we can ignore these duplicate events.\nlet $bbed8b41f857bcc0$var$transitionsByElement = new Map();\n// A list of callbacks to call once there are no transitioning elements.\nlet $bbed8b41f857bcc0$var$transitionCallbacks = new Set();\nfunction $bbed8b41f857bcc0$var$setupGlobalEvents() {\n if (typeof window === 'undefined') return;\n let onTransitionStart = (e)=>{\n // Add the transitioning property to the list for this element.\n let transitions = $bbed8b41f857bcc0$var$transitionsByElement.get(e.target);\n if (!transitions) {\n transitions = new Set();\n $bbed8b41f857bcc0$var$transitionsByElement.set(e.target, transitions);\n // The transitioncancel event must be registered on the element itself, rather than as a global\n // event. This enables us to handle when the node is deleted from the document while it is transitioning.\n // In that case, the cancel event would have nowhere to bubble to so we need to handle it directly.\n e.target.addEventListener('transitioncancel', onTransitionEnd);\n }\n transitions.add(e.propertyName);\n };\n let onTransitionEnd = (e)=>{\n // Remove property from list of transitioning properties.\n let properties = $bbed8b41f857bcc0$var$transitionsByElement.get(e.target);\n if (!properties) return;\n properties.delete(e.propertyName);\n // If empty, remove transitioncancel event, and remove the element from the list of transitioning elements.\n if (properties.size === 0) {\n e.target.removeEventListener('transitioncancel', onTransitionEnd);\n $bbed8b41f857bcc0$var$transitionsByElement.delete(e.target);\n }\n // If no transitioning elements, call all of the queued callbacks.\n if ($bbed8b41f857bcc0$var$transitionsByElement.size === 0) {\n for (let cb of $bbed8b41f857bcc0$var$transitionCallbacks)cb();\n $bbed8b41f857bcc0$var$transitionCallbacks.clear();\n }\n };\n document.body.addEventListener('transitionrun', onTransitionStart);\n document.body.addEventListener('transitionend', onTransitionEnd);\n}\nif (typeof document !== 'undefined') {\n if (document.readyState !== 'loading') $bbed8b41f857bcc0$var$setupGlobalEvents();\n else document.addEventListener('DOMContentLoaded', $bbed8b41f857bcc0$var$setupGlobalEvents);\n}\nfunction $bbed8b41f857bcc0$export$24490316f764c430(fn) {\n // Wait one frame to see if an animation starts, e.g. a transition on mount.\n requestAnimationFrame(()=>{\n // If no transitions are running, call the function immediately.\n // Otherwise, add it to a list of callbacks to run at the end of the animation.\n if ($bbed8b41f857bcc0$var$transitionsByElement.size === 0) fn();\n else $bbed8b41f857bcc0$var$transitionCallbacks.add(fn);\n });\n}\n\n\n\n\n// Keep track of elements that we are currently handling dragging for via useDrag1D.\n// If there's an ancestor and a descendant both using useDrag1D(), and the user starts\n// dragging the descendant, we don't want useDrag1D events to fire for the ancestor.\nconst $9cc09df9fd7676be$var$draggingElements = [];\nfunction $9cc09df9fd7676be$export$7bbed75feba39706(props) {\n console.warn('useDrag1D is deprecated, please use `useMove` instead https://react-spectrum.adobe.com/react-aria/useMove.html');\n let { containerRef: containerRef , reverse: reverse , orientation: orientation , onHover: onHover , onDrag: onDrag , onPositionChange: onPositionChange , onIncrement: onIncrement , onDecrement: onDecrement , onIncrementToMax: onIncrementToMax , onDecrementToMin: onDecrementToMin , onCollapseToggle: onCollapseToggle } = props;\n let getPosition = (e)=>orientation === 'horizontal' ? e.clientX : e.clientY\n ;\n let getNextOffset = (e)=>{\n let containerOffset = $ab71dadb03a6fb2e$export$622cea445a1c5b7d(containerRef.current, reverse, orientation);\n let mouseOffset = getPosition(e);\n let nextOffset = reverse ? containerOffset - mouseOffset : mouseOffset - containerOffset;\n return nextOffset;\n };\n let dragging = $12uGp$useRef(false);\n let prevPosition = $12uGp$useRef(0);\n // Keep track of the current handlers in a ref so that the events can access them.\n let handlers = $12uGp$useRef({\n onPositionChange: onPositionChange,\n onDrag: onDrag\n });\n handlers.current.onDrag = onDrag;\n handlers.current.onPositionChange = onPositionChange;\n let onMouseDragged = (e)=>{\n e.preventDefault();\n let nextOffset = getNextOffset(e);\n if (!dragging.current) {\n dragging.current = true;\n if (handlers.current.onDrag) handlers.current.onDrag(true);\n if (handlers.current.onPositionChange) handlers.current.onPositionChange(nextOffset);\n }\n if (prevPosition.current === nextOffset) return;\n prevPosition.current = nextOffset;\n if (onPositionChange) onPositionChange(nextOffset);\n };\n let onMouseUp = (e)=>{\n const target = e.target;\n dragging.current = false;\n let nextOffset = getNextOffset(e);\n if (handlers.current.onDrag) handlers.current.onDrag(false);\n if (handlers.current.onPositionChange) handlers.current.onPositionChange(nextOffset);\n $9cc09df9fd7676be$var$draggingElements.splice($9cc09df9fd7676be$var$draggingElements.indexOf(target), 1);\n window.removeEventListener('mouseup', onMouseUp, false);\n window.removeEventListener('mousemove', onMouseDragged, false);\n };\n let onMouseDown = (e)=>{\n const target = e.currentTarget;\n // If we're already handling dragging on a descendant with useDrag1D, then\n // we don't want to handle the drag motion on this target as well.\n if ($9cc09df9fd7676be$var$draggingElements.some((elt)=>target.contains(elt)\n )) return;\n $9cc09df9fd7676be$var$draggingElements.push(target);\n window.addEventListener('mousemove', onMouseDragged, false);\n window.addEventListener('mouseup', onMouseUp, false);\n };\n let onMouseEnter = ()=>{\n if (onHover) onHover(true);\n };\n let onMouseOut = ()=>{\n if (onHover) onHover(false);\n };\n let onKeyDown = (e)=>{\n switch(e.key){\n case 'Left':\n case 'ArrowLeft':\n if (orientation === 'horizontal') {\n e.preventDefault();\n if (onDecrement && !reverse) onDecrement();\n else if (onIncrement && reverse) onIncrement();\n }\n break;\n case 'Up':\n case 'ArrowUp':\n if (orientation === 'vertical') {\n e.preventDefault();\n if (onDecrement && !reverse) onDecrement();\n else if (onIncrement && reverse) onIncrement();\n }\n break;\n case 'Right':\n case 'ArrowRight':\n if (orientation === 'horizontal') {\n e.preventDefault();\n if (onIncrement && !reverse) onIncrement();\n else if (onDecrement && reverse) onDecrement();\n }\n break;\n case 'Down':\n case 'ArrowDown':\n if (orientation === 'vertical') {\n e.preventDefault();\n if (onIncrement && !reverse) onIncrement();\n else if (onDecrement && reverse) onDecrement();\n }\n break;\n case 'Home':\n e.preventDefault();\n if (onDecrementToMin) onDecrementToMin();\n break;\n case 'End':\n e.preventDefault();\n if (onIncrementToMax) onIncrementToMax();\n break;\n case 'Enter':\n e.preventDefault();\n if (onCollapseToggle) onCollapseToggle();\n break;\n }\n };\n return {\n onMouseDown: onMouseDown,\n onMouseEnter: onMouseEnter,\n onMouseOut: onMouseOut,\n onKeyDown: onKeyDown\n };\n}\n\n\n\nfunction $03deb23ff14920c4$export$4eaf04e54aa8eed6() {\n let globalListeners = $12uGp$useRef(new Map());\n let addGlobalListener = $12uGp$useCallback((eventTarget, type, listener, options)=>{\n // Make sure we remove the listener after it is called with the `once` option.\n let fn = (options === null || options === void 0 ? void 0 : options.once) ? (...args)=>{\n globalListeners.current.delete(listener);\n listener(...args);\n } : listener;\n globalListeners.current.set(listener, {\n type: type,\n eventTarget: eventTarget,\n fn: fn,\n options: options\n });\n eventTarget.addEventListener(type, listener, options);\n }, []);\n let removeGlobalListener = $12uGp$useCallback((eventTarget, type, listener, options)=>{\n var ref;\n let fn = ((ref = globalListeners.current.get(listener)) === null || ref === void 0 ? void 0 : ref.fn) || listener;\n eventTarget.removeEventListener(type, fn, options);\n globalListeners.current.delete(listener);\n }, []);\n let removeAllGlobalListeners = $12uGp$useCallback(()=>{\n globalListeners.current.forEach((value, key)=>{\n removeGlobalListener(value.eventTarget, value.type, key, value.options);\n });\n }, [\n removeGlobalListener\n ]);\n // eslint-disable-next-line arrow-body-style\n $12uGp$useEffect(()=>{\n return removeAllGlobalListeners;\n }, [\n removeAllGlobalListeners\n ]);\n return {\n addGlobalListener: addGlobalListener,\n removeGlobalListener: removeGlobalListener,\n removeAllGlobalListeners: removeAllGlobalListeners\n };\n}\n\n\n\nfunction $313b98861ee5dd6c$export$d6875122194c7b44(props, defaultLabel) {\n let { id: id , 'aria-label': label , 'aria-labelledby': labelledBy } = props;\n // If there is both an aria-label and aria-labelledby,\n // combine them by pointing to the element itself.\n id = $bdb11010cef70236$export$f680877a34711e37(id);\n if (labelledBy && label) {\n let ids = new Set([\n ...labelledBy.trim().split(/\\s+/),\n id\n ]);\n labelledBy = [\n ...ids\n ].join(' ');\n } else if (labelledBy) labelledBy = labelledBy.trim().split(/\\s+/).join(' ');\n // If no labels are provided, use the default\n if (!label && !labelledBy && defaultLabel) label = defaultLabel;\n return {\n id: id,\n 'aria-label': label,\n 'aria-labelledby': labelledBy\n };\n}\n\n\n\n\nfunction $df56164dff5785e2$export$4338b53315abf666(forwardedRef) {\n const objRef = $12uGp$useRef();\n /**\n * We're using `useLayoutEffect` here instead of `useEffect` because we want\n * to make sure that the `ref` value is up to date before other places in the\n * the execution cycle try to read it.\n */ $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c(()=>{\n if (!forwardedRef) return;\n if (typeof forwardedRef === 'function') forwardedRef(objRef.current);\n else forwardedRef.current = objRef.current;\n }, [\n forwardedRef\n ]);\n return objRef;\n}\n\n\n\nfunction $4f58c5f72bcf79f7$export$496315a1608d9602(effect, dependencies) {\n const isInitialMount = $12uGp$useRef(true);\n $12uGp$useEffect(()=>{\n if (isInitialMount.current) isInitialMount.current = false;\n else effect();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, dependencies);\n}\n\n\n\n\nfunction $9daab02d461809db$var$hasResizeObserver() {\n return typeof window.ResizeObserver !== 'undefined';\n}\nfunction $9daab02d461809db$export$683480f191c0e3ea(options) {\n const { ref: ref , onResize: onResize } = options;\n $12uGp$useEffect(()=>{\n let element = ref === null || ref === void 0 ? void 0 : ref.current;\n if (!element) return;\n if (!$9daab02d461809db$var$hasResizeObserver()) {\n window.addEventListener('resize', onResize, false);\n return ()=>{\n window.removeEventListener('resize', onResize, false);\n };\n } else {\n const resizeObserverInstance = new window.ResizeObserver((entries)=>{\n if (!entries.length) return;\n onResize();\n });\n resizeObserverInstance.observe(element);\n return ()=>{\n if (element) resizeObserverInstance.unobserve(element);\n };\n }\n }, [\n onResize,\n ref\n ]);\n}\n\n\n\nfunction $e7801be82b4b2a53$export$4debdb1a3f0fa79e(context, ref) {\n $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c(()=>{\n if (context && context.ref && ref) {\n context.ref.current = ref.current;\n return ()=>{\n context.ref.current = null;\n };\n }\n }, [\n context,\n ref\n ]);\n}\n\n\nfunction $62d8ded9296f3872$export$cfa2225e87938781(node) {\n while(node && !$62d8ded9296f3872$var$isScrollable(node))node = node.parentElement;\n return node || document.scrollingElement || document.documentElement;\n}\nfunction $62d8ded9296f3872$var$isScrollable(node) {\n let style = window.getComputedStyle(node);\n return /(auto|scroll)/.test(style.overflow + style.overflowX + style.overflowY);\n}\n\n\n\n// @ts-ignore\nlet $5df64b3807dc15ee$var$visualViewport = typeof window !== 'undefined' && window.visualViewport;\nfunction $5df64b3807dc15ee$export$d699905dd57c73ca() {\n let [size1, setSize] = $12uGp$useState(()=>$5df64b3807dc15ee$var$getViewportSize()\n );\n $12uGp$useEffect(()=>{\n // Use visualViewport api to track available height even on iOS virtual keyboard opening\n let onResize = ()=>{\n setSize((size)=>{\n let newSize = $5df64b3807dc15ee$var$getViewportSize();\n if (newSize.width === size.width && newSize.height === size.height) return size;\n return newSize;\n });\n };\n if (!$5df64b3807dc15ee$var$visualViewport) window.addEventListener('resize', onResize);\n else $5df64b3807dc15ee$var$visualViewport.addEventListener('resize', onResize);\n return ()=>{\n if (!$5df64b3807dc15ee$var$visualViewport) window.removeEventListener('resize', onResize);\n else $5df64b3807dc15ee$var$visualViewport.removeEventListener('resize', onResize);\n };\n }, []);\n return size1;\n}\nfunction $5df64b3807dc15ee$var$getViewportSize() {\n return {\n width: ($5df64b3807dc15ee$var$visualViewport === null || $5df64b3807dc15ee$var$visualViewport === void 0 ? void 0 : $5df64b3807dc15ee$var$visualViewport.width) || window.innerWidth,\n height: ($5df64b3807dc15ee$var$visualViewport === null || $5df64b3807dc15ee$var$visualViewport === void 0 ? void 0 : $5df64b3807dc15ee$var$visualViewport.height) || window.innerHeight\n };\n}\n\n\n\n\nlet $ef06256079686ba0$var$descriptionId = 0;\nconst $ef06256079686ba0$var$descriptionNodes = new Map();\nfunction $ef06256079686ba0$export$f8aeda7b10753fa1(description) {\n let [id1, setId] = $12uGp$useState(undefined);\n $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c(()=>{\n if (!description) return;\n let desc = $ef06256079686ba0$var$descriptionNodes.get(description);\n if (!desc) {\n let id = `react-aria-description-${$ef06256079686ba0$var$descriptionId++}`;\n setId(id);\n let node = document.createElement('div');\n node.id = id;\n node.style.display = 'none';\n node.textContent = description;\n document.body.appendChild(node);\n desc = {\n refCount: 0,\n element: node\n };\n $ef06256079686ba0$var$descriptionNodes.set(description, desc);\n } else setId(desc.element.id);\n desc.refCount++;\n return ()=>{\n if (--desc.refCount === 0) {\n desc.element.remove();\n $ef06256079686ba0$var$descriptionNodes.delete(description);\n }\n };\n }, [\n description\n ]);\n return {\n 'aria-describedby': description ? id1 : undefined\n };\n}\n\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $c87311424ea30a05$var$testUserAgent(re) {\n var ref;\n if (typeof window === 'undefined' || window.navigator == null) return false;\n return ((ref = window.navigator['userAgentData']) === null || ref === void 0 ? void 0 : ref.brands.some((brand)=>re.test(brand.brand)\n )) || re.test(window.navigator.userAgent);\n}\nfunction $c87311424ea30a05$var$testPlatform(re) {\n var ref;\n return typeof window !== 'undefined' && window.navigator != null ? re.test(((ref = window.navigator['userAgentData']) === null || ref === void 0 ? void 0 : ref.platform) || window.navigator.platform) : false;\n}\nfunction $c87311424ea30a05$export$9ac100e40613ea10() {\n return $c87311424ea30a05$var$testPlatform(/^Mac/i);\n}\nfunction $c87311424ea30a05$export$186c6964ca17d99() {\n return $c87311424ea30a05$var$testPlatform(/^iPhone/i);\n}\nfunction $c87311424ea30a05$export$7bef049ce92e4224() {\n return $c87311424ea30a05$var$testPlatform(/^iPad/i) || $c87311424ea30a05$export$9ac100e40613ea10() && navigator.maxTouchPoints > 1;\n}\nfunction $c87311424ea30a05$export$fedb369cb70207f1() {\n return $c87311424ea30a05$export$186c6964ca17d99() || $c87311424ea30a05$export$7bef049ce92e4224();\n}\nfunction $c87311424ea30a05$export$e1865c3bedcd822b() {\n return $c87311424ea30a05$export$9ac100e40613ea10() || $c87311424ea30a05$export$fedb369cb70207f1();\n}\nfunction $c87311424ea30a05$export$78551043582a6a98() {\n return $c87311424ea30a05$var$testUserAgent(/AppleWebKit/i) && !$c87311424ea30a05$export$6446a186d09e379e();\n}\nfunction $c87311424ea30a05$export$6446a186d09e379e() {\n return $c87311424ea30a05$var$testUserAgent(/Chrome/i);\n}\nfunction $c87311424ea30a05$export$a11b0059900ceec8() {\n return $c87311424ea30a05$var$testUserAgent(/Android/i);\n}\n\n\n\nfunction $e9faafb641e167db$export$90fc3a17d93f704c(ref, event, handler1, options) {\n let handlerRef = $12uGp$useRef(handler1);\n handlerRef.current = handler1;\n let isDisabled = handler1 == null;\n $12uGp$useEffect(()=>{\n if (isDisabled) return;\n let element = ref.current;\n let handler = (e)=>handlerRef.current.call(this, e)\n ;\n element.addEventListener(event, handler, options);\n return ()=>{\n element.removeEventListener(event, handler, options);\n };\n }, [\n ref,\n event,\n options,\n isDisabled\n ]);\n}\n\n\n\n\nfunction $1dbecbe27a04f9af$export$14d238f342723f25(defaultValue) {\n let [value, setValue] = $12uGp$useState(defaultValue);\n let valueRef = $12uGp$useRef(value);\n let effect = $12uGp$useRef(null);\n valueRef.current = value;\n // Store the function in a ref so we can always access the current version\n // which has the proper `value` in scope.\n let nextRef = $12uGp$useRef(null);\n nextRef.current = ()=>{\n // Run the generator to the next yield.\n let newValue = effect.current.next();\n // If the generator is done, reset the effect.\n if (newValue.done) {\n effect.current = null;\n return;\n }\n // If the value is the same as the current value,\n // then continue to the next yield. Otherwise,\n // set the value in state and wait for the next layout effect.\n if (value === newValue.value) nextRef.current();\n else setValue(newValue.value);\n };\n $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c(()=>{\n // If there is an effect currently running, continue to the next yield.\n if (effect.current) nextRef.current();\n });\n let queue = $12uGp$useCallback((fn)=>{\n effect.current = fn(valueRef.current);\n nextRef.current();\n }, [\n effect,\n nextRef\n ]);\n return [\n value,\n queue\n ];\n}\n\n\nfunction $2f04cbc44ee30ce0$export$53a0910f038337bd(scrollView, element) {\n let offsetX = $2f04cbc44ee30ce0$var$relativeOffset(scrollView, element, 'left');\n let offsetY = $2f04cbc44ee30ce0$var$relativeOffset(scrollView, element, 'top');\n let width = element.offsetWidth;\n let height = element.offsetHeight;\n let x = scrollView.scrollLeft;\n let y = scrollView.scrollTop;\n let maxX = x + scrollView.offsetWidth;\n let maxY = y + scrollView.offsetHeight;\n if (offsetX <= x) x = offsetX;\n else if (offsetX + width > maxX) x += offsetX + width - maxX;\n if (offsetY <= y) y = offsetY;\n else if (offsetY + height > maxY) y += offsetY + height - maxY;\n scrollView.scrollLeft = x;\n scrollView.scrollTop = y;\n}\n/**\n * Computes the offset left or top from child to ancestor by accumulating\n * offsetLeft or offsetTop through intervening offsetParents.\n */ function $2f04cbc44ee30ce0$var$relativeOffset(ancestor, child, axis) {\n const prop = axis === 'left' ? 'offsetLeft' : 'offsetTop';\n let sum = 0;\n while(child.offsetParent){\n sum += child[prop];\n if (child.offsetParent === ancestor) break;\n else if (child.offsetParent.contains(ancestor)) {\n // If the ancestor is not `position:relative`, then we stop at\n // _its_ offset parent, and we subtract off _its_ offset, so that\n // we end up with the proper offset from child to ancestor.\n sum -= ancestor[prop];\n break;\n }\n child = child.offsetParent;\n }\n return sum;\n}\n\n\n\n\nfunction $6a7db85432448f7f$export$60278871457622de(event) {\n // JAWS/NVDA with Firefox.\n if (event.mozInputSource === 0 && event.isTrusted) return true;\n // Android TalkBack's detail value varies depending on the event listener providing the event so we have specific logic here instead\n // If pointerType is defined, event is from a click listener. For events from mousedown listener, detail === 0 is a sufficient check\n // to detect TalkBack virtual clicks.\n if ($c87311424ea30a05$export$a11b0059900ceec8() && event.pointerType) return event.type === 'click' && event.buttons === 1;\n return event.detail === 0 && !event.pointerType;\n}\nfunction $6a7db85432448f7f$export$29bf1b5f2c56cf63(event) {\n // If the pointer size is zero, then we assume it's from a screen reader.\n // Android TalkBack double tap will sometimes return a event with width and height of 1\n // and pointerType === 'mouse' so we need to check for a specific combination of event attributes.\n // Cannot use \"event.pressure === 0\" as the sole check due to Safari pointer events always returning pressure === 0\n // instead of .5, see https://bugs.webkit.org/show_bug.cgi?id=206216. event.pointerType === 'mouse' is to distingush\n // Talkback double tap from Windows Firefox touch screen press\n return event.width === 0 && event.height === 0 || event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse';\n}\n\n\n\n\nexport {$bdb11010cef70236$export$f680877a34711e37 as useId, $bdb11010cef70236$export$cd8c9cb68f842629 as mergeIds, $bdb11010cef70236$export$b4cc09c592e8fdb8 as useSlotId, $ff5963eb1fccf552$export$e08e3b67e392101e as chain, $3ef42575df84b30b$export$9d1611c77c2fe928 as mergeProps, $5dc95899b306f630$export$c9058316764c140e as mergeRefs, $65484d02dcb7eb3e$export$457c3d6518dd4c6f as filterDOMProps, $7215afc6de606d6b$export$de79e2c695e052f3 as focusWithoutScrolling, $ab71dadb03a6fb2e$export$622cea445a1c5b7d as getOffset, $bbed8b41f857bcc0$export$24490316f764c430 as runAfterTransition, $9cc09df9fd7676be$export$7bbed75feba39706 as useDrag1D, $03deb23ff14920c4$export$4eaf04e54aa8eed6 as useGlobalListeners, $313b98861ee5dd6c$export$d6875122194c7b44 as useLabels, $df56164dff5785e2$export$4338b53315abf666 as useObjectRef, $4f58c5f72bcf79f7$export$496315a1608d9602 as useUpdateEffect, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c as useLayoutEffect, $9daab02d461809db$export$683480f191c0e3ea as useResizeObserver, $e7801be82b4b2a53$export$4debdb1a3f0fa79e as useSyncRef, $62d8ded9296f3872$export$cfa2225e87938781 as getScrollParent, $5df64b3807dc15ee$export$d699905dd57c73ca as useViewportSize, $ef06256079686ba0$export$f8aeda7b10753fa1 as useDescription, $c87311424ea30a05$export$9ac100e40613ea10 as isMac, $c87311424ea30a05$export$186c6964ca17d99 as isIPhone, $c87311424ea30a05$export$7bef049ce92e4224 as isIPad, $c87311424ea30a05$export$fedb369cb70207f1 as isIOS, $c87311424ea30a05$export$e1865c3bedcd822b as isAppleDevice, $c87311424ea30a05$export$78551043582a6a98 as isWebKit, $c87311424ea30a05$export$6446a186d09e379e as isChrome, $c87311424ea30a05$export$a11b0059900ceec8 as isAndroid, $e9faafb641e167db$export$90fc3a17d93f704c as useEvent, $1dbecbe27a04f9af$export$14d238f342723f25 as useValueEffect, $2f04cbc44ee30ce0$export$53a0910f038337bd as scrollIntoView, $4507461a1b870123$re_export$clamp as clamp, $4507461a1b870123$re_export$snapValueToStep as snapValueToStep, $6a7db85432448f7f$export$60278871457622de as isVirtualClick, $6a7db85432448f7f$export$29bf1b5f2c56cf63 as isVirtualPointerEvent};\n//# sourceMappingURL=module.js.map\n","import $iFADg$react, {useContext as $iFADg$useContext, useState as $iFADg$useState, useEffect as $iFADg$useEffect, useMemo as $iFADg$useMemo, useRef as $iFADg$useRef} from \"react\";\nimport {useIsSSR as $iFADg$useIsSSR} from \"@react-aria/ssr\";\nimport {LocalizedStringDictionary as $iFADg$LocalizedStringDictionary, LocalizedStringFormatter as $iFADg$LocalizedStringFormatter} from \"@internationalized/string\";\nimport {DateFormatter as $iFADg$DateFormatter} from \"@internationalized/date\";\nimport {NumberFormatter as $iFADg$NumberFormatter} from \"@internationalized/number\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // https://en.wikipedia.org/wiki/Right-to-left\nconst $148a7a147e38ea7f$var$RTL_SCRIPTS = new Set([\n 'Arab',\n 'Syrc',\n 'Samr',\n 'Mand',\n 'Thaa',\n 'Mend',\n 'Nkoo',\n 'Adlm',\n 'Rohg',\n 'Hebr'\n]);\nconst $148a7a147e38ea7f$var$RTL_LANGS = new Set([\n 'ae',\n 'ar',\n 'arc',\n 'bcc',\n 'bqi',\n 'ckb',\n 'dv',\n 'fa',\n 'glk',\n 'he',\n 'ku',\n 'mzn',\n 'nqo',\n 'pnb',\n 'ps',\n 'sd',\n 'ug',\n 'ur',\n 'yi'\n]);\nfunction $148a7a147e38ea7f$export$702d680b21cbd764(locale) {\n // If the Intl.Locale API is available, use it to get the script for the locale.\n // This is more accurate than guessing by language, since languages can be written in multiple scripts.\n // @ts-ignore\n if (Intl.Locale) {\n // @ts-ignore\n let script = new Intl.Locale(locale).maximize().script;\n return $148a7a147e38ea7f$var$RTL_SCRIPTS.has(script);\n }\n // If not, just guess by the language (first part of the locale)\n let lang = locale.split('-')[0];\n return $148a7a147e38ea7f$var$RTL_LANGS.has(lang);\n}\n\n\n\n\n\nfunction $1e5a04cdaf7d1af8$export$f09106e7c6677ec5() {\n // @ts-ignore\n let locale = typeof navigator !== 'undefined' && (navigator.language || navigator.userLanguage) || 'en-US';\n try {\n // @ts-ignore\n Intl.DateTimeFormat.supportedLocalesOf([\n locale\n ]);\n } catch (_err) {\n locale = 'en-US';\n }\n return {\n locale: locale,\n direction: $148a7a147e38ea7f$export$702d680b21cbd764(locale) ? 'rtl' : 'ltr'\n };\n}\nlet $1e5a04cdaf7d1af8$var$currentLocale = $1e5a04cdaf7d1af8$export$f09106e7c6677ec5();\nlet $1e5a04cdaf7d1af8$var$listeners = new Set();\nfunction $1e5a04cdaf7d1af8$var$updateLocale() {\n $1e5a04cdaf7d1af8$var$currentLocale = $1e5a04cdaf7d1af8$export$f09106e7c6677ec5();\n for (let listener of $1e5a04cdaf7d1af8$var$listeners)listener($1e5a04cdaf7d1af8$var$currentLocale);\n}\nfunction $1e5a04cdaf7d1af8$export$188ec29ebc2bdc3a() {\n let isSSR = $iFADg$useIsSSR();\n let [defaultLocale, setDefaultLocale] = $iFADg$useState($1e5a04cdaf7d1af8$var$currentLocale);\n $iFADg$useEffect(()=>{\n if ($1e5a04cdaf7d1af8$var$listeners.size === 0) window.addEventListener('languagechange', $1e5a04cdaf7d1af8$var$updateLocale);\n $1e5a04cdaf7d1af8$var$listeners.add(setDefaultLocale);\n return ()=>{\n $1e5a04cdaf7d1af8$var$listeners.delete(setDefaultLocale);\n if ($1e5a04cdaf7d1af8$var$listeners.size === 0) window.removeEventListener('languagechange', $1e5a04cdaf7d1af8$var$updateLocale);\n };\n }, []);\n // We cannot determine the browser's language on the server, so default to\n // en-US. This will be updated after hydration on the client to the correct value.\n if (isSSR) return {\n locale: 'en-US',\n direction: 'ltr'\n };\n return defaultLocale;\n}\n\n\n\nconst $18f2051aff69b9bf$var$I18nContext = /*#__PURE__*/ $iFADg$react.createContext(null);\nfunction $18f2051aff69b9bf$export$a54013f0d02a8f82(props) {\n let { locale: locale , children: children } = props;\n let defaultLocale = $1e5a04cdaf7d1af8$export$188ec29ebc2bdc3a();\n let value = locale ? {\n locale: locale,\n direction: $148a7a147e38ea7f$export$702d680b21cbd764(locale) ? 'rtl' : 'ltr'\n } : defaultLocale;\n return(/*#__PURE__*/ $iFADg$react.createElement($18f2051aff69b9bf$var$I18nContext.Provider, {\n value: value\n }, children));\n}\nfunction $18f2051aff69b9bf$export$43bb16f9c6d9e3f7() {\n let defaultLocale = $1e5a04cdaf7d1af8$export$188ec29ebc2bdc3a();\n let context = $iFADg$useContext($18f2051aff69b9bf$var$I18nContext);\n return context || defaultLocale;\n}\n\n\nvar $2aa2084a6c2b6b4f$exports = {};\n\"use strict\";\n\n\n\n\n\nconst $fca6afa0e843324b$var$cache = new WeakMap();\nfunction $fca6afa0e843324b$var$getCachedDictionary(strings) {\n let dictionary = $fca6afa0e843324b$var$cache.get(strings);\n if (!dictionary) {\n dictionary = new $iFADg$LocalizedStringDictionary(strings);\n $fca6afa0e843324b$var$cache.set(strings, dictionary);\n }\n return dictionary;\n}\nfunction $fca6afa0e843324b$export$f12b703ca79dfbb1(strings) {\n let { locale: locale } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7();\n let dictionary = $iFADg$useMemo(()=>$fca6afa0e843324b$var$getCachedDictionary(strings)\n , [\n strings\n ]);\n return $iFADg$useMemo(()=>new $iFADg$LocalizedStringFormatter(locale, dictionary)\n , [\n locale,\n dictionary\n ]);\n}\n\n\n\n\nfunction $33bf17300c498528$export$a2f47a3d2973640(options = {\n}) {\n let { locale: locale } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7();\n // @ts-ignore\n return $iFADg$useMemo(()=>new Intl.ListFormat(locale, options)\n , [\n locale,\n options\n ]);\n}\n\n\n\n\n\nfunction $896ba0a80a8f4d36$export$85fd5fdf27bacc79(options) {\n // Reuse last options object if it is shallowly equal, which allows the useMemo result to also be reused.\n let lastOptions = $iFADg$useRef(null);\n if (options && lastOptions.current && $896ba0a80a8f4d36$var$isEqual(options, lastOptions.current)) options = lastOptions.current;\n lastOptions.current = options;\n let { locale: locale } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7();\n return $iFADg$useMemo(()=>new $iFADg$DateFormatter(locale, options)\n , [\n locale,\n options\n ]);\n}\nfunction $896ba0a80a8f4d36$var$isEqual(a, b) {\n if (a === b) return true;\n let aKeys = Object.keys(a);\n let bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n for (let key of aKeys){\n if (b[key] !== a[key]) return false;\n }\n return true;\n}\n\n\n\n\n\nfunction $a916eb452884faea$export$b7a616150fdb9f44(options = {\n}) {\n let { locale: locale } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7();\n return $iFADg$useMemo(()=>new $iFADg$NumberFormatter(locale, options)\n , [\n locale,\n options\n ]);\n}\n\n\n\nlet $325a3faab7a68acd$var$cache = new Map();\nfunction $325a3faab7a68acd$export$a16aca283550c30d(options) {\n let { locale: locale } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7();\n let cacheKey = locale + (options ? Object.entries(options).sort((a, b)=>a[0] < b[0] ? -1 : 1\n ).join() : '');\n if ($325a3faab7a68acd$var$cache.has(cacheKey)) return $325a3faab7a68acd$var$cache.get(cacheKey);\n let formatter = new Intl.Collator(locale, options);\n $325a3faab7a68acd$var$cache.set(cacheKey, formatter);\n return formatter;\n}\n\n\n\nfunction $bb77f239b46e8c72$export$3274cf84b703fff(options) {\n let collator = $325a3faab7a68acd$export$a16aca283550c30d({\n usage: 'search',\n ...options\n });\n // TODO(later): these methods don't currently support the ignorePunctuation option.\n return {\n startsWith (string, substring) {\n if (substring.length === 0) return true;\n // Normalize both strings so we can slice safely\n // TODO: take into account the ignorePunctuation option as well...\n string = string.normalize('NFC');\n substring = substring.normalize('NFC');\n return collator.compare(string.slice(0, substring.length), substring) === 0;\n },\n endsWith (string, substring) {\n if (substring.length === 0) return true;\n string = string.normalize('NFC');\n substring = substring.normalize('NFC');\n return collator.compare(string.slice(-substring.length), substring) === 0;\n },\n contains (string, substring) {\n if (substring.length === 0) return true;\n string = string.normalize('NFC');\n substring = substring.normalize('NFC');\n let scan = 0;\n let sliceLen = substring.length;\n for(; scan + sliceLen <= string.length; scan++){\n let slice = string.slice(scan, scan + sliceLen);\n if (collator.compare(substring, slice) === 0) return true;\n }\n return false;\n }\n };\n}\n\n\n\n\nexport {$18f2051aff69b9bf$export$a54013f0d02a8f82 as I18nProvider, $18f2051aff69b9bf$export$43bb16f9c6d9e3f7 as useLocale, $fca6afa0e843324b$export$f12b703ca79dfbb1 as useLocalizedStringFormatter, $33bf17300c498528$export$a2f47a3d2973640 as useListFormatter, $896ba0a80a8f4d36$export$85fd5fdf27bacc79 as useDateFormatter, $a916eb452884faea$export$b7a616150fdb9f44 as useNumberFormatter, $325a3faab7a68acd$export$a16aca283550c30d as useCollator, $bb77f239b46e8c72$export$3274cf84b703fff as useFilter};\n//# sourceMappingURL=real-module.js.map\n","import {useRef as $eCAIO$useRef, useEffect as $eCAIO$useEffect, useMemo as $eCAIO$useMemo} from \"react\";\nimport {getFocusableTreeWalker as $eCAIO$getFocusableTreeWalker, focusSafely as $eCAIO$focusSafely} from \"@react-aria/focus\";\nimport {focusWithoutScrolling as $eCAIO$focusWithoutScrolling, useEvent as $eCAIO$useEvent, scrollIntoView as $eCAIO$scrollIntoView, mergeProps as $eCAIO$mergeProps, isAppleDevice as $eCAIO$isAppleDevice, isMac as $eCAIO$isMac} from \"@react-aria/utils\";\nimport {useLocale as $eCAIO$useLocale, useCollator as $eCAIO$useCollator} from \"@react-aria/i18n\";\nimport {usePress as $eCAIO$usePress, useLongPress as $eCAIO$useLongPress} from \"@react-aria/interactions\";\n\n\n\n\n\n\nfunction $feb5ffebff200149$export$d3e3bd3e26688c04(e) {\n // Ctrl + Arrow Up/Arrow Down has a system wide meaning on macOS, so use Alt instead.\n // On Windows and Ubuntu, Alt + Space has a system wide meaning.\n return $eCAIO$isAppleDevice() ? e.altKey : e.ctrlKey;\n}\nfunction $feb5ffebff200149$export$16792effe837dba3(e) {\n if ($eCAIO$isMac()) return e.metaKey;\n return e.ctrlKey;\n}\n\n\n\n\n/**\n * Controls how long to wait before clearing the typeahead buffer.\n */ const $fb3050f43d946246$var$TYPEAHEAD_DEBOUNCE_WAIT_MS = 1000; // 1 second\nfunction $fb3050f43d946246$export$e32c88dfddc6e1d8(options) {\n let { keyboardDelegate: keyboardDelegate , selectionManager: selectionManager , onTypeSelect: onTypeSelect } = options;\n let state = $eCAIO$useRef({\n search: '',\n timeout: null\n }).current;\n let onKeyDown = (e)=>{\n let character = $fb3050f43d946246$var$getStringForKey(e.key);\n if (!character || e.ctrlKey || e.metaKey) return;\n // Do not propagate the Spacebar event if it's meant to be part of the search.\n // When we time out, the search term becomes empty, hence the check on length.\n // Trimming is to account for the case of pressing the Spacebar more than once,\n // which should cycle through the selection/deselection of the focused item.\n if (character === ' ' && state.search.trim().length > 0) {\n e.preventDefault();\n if (!('continuePropagation' in e)) e.stopPropagation();\n }\n state.search += character;\n // Use the delegate to find a key to focus.\n // Prioritize items after the currently focused item, falling back to searching the whole list.\n let key = keyboardDelegate.getKeyForSearch(state.search, selectionManager.focusedKey);\n // If no key found, search from the top.\n if (key == null) key = keyboardDelegate.getKeyForSearch(state.search);\n if (key != null) {\n selectionManager.setFocusedKey(key);\n if (onTypeSelect) onTypeSelect(key);\n }\n clearTimeout(state.timeout);\n state.timeout = setTimeout(()=>{\n state.search = '';\n }, $fb3050f43d946246$var$TYPEAHEAD_DEBOUNCE_WAIT_MS);\n };\n return {\n typeSelectProps: {\n // Using a capturing listener to catch the keydown event before\n // other hooks in order to handle the Spacebar event.\n onKeyDownCapture: keyboardDelegate.getKeyForSearch ? onKeyDown : null\n }\n };\n}\nfunction $fb3050f43d946246$var$getStringForKey(key) {\n // If the key is of length 1, it is an ASCII value.\n // Otherwise, if there are no ASCII characters in the key name,\n // it is a Unicode character.\n // See https://www.w3.org/TR/uievents-key/\n if (key.length === 1 || !/^[A-Z]/i.test(key)) return key;\n return '';\n}\n\n\nfunction $ae20dd8cbca75726$export$d6daf82dcd84e87c(options) {\n let { selectionManager: manager , keyboardDelegate: delegate , ref: ref , autoFocus: autoFocus = false , shouldFocusWrap: shouldFocusWrap = false , disallowEmptySelection: disallowEmptySelection = false , disallowSelectAll: disallowSelectAll = false , selectOnFocus: selectOnFocus = manager.selectionBehavior === 'replace' , disallowTypeAhead: disallowTypeAhead = false , shouldUseVirtualFocus: shouldUseVirtualFocus , allowsTabNavigation: allowsTabNavigation = false , isVirtualized: isVirtualized , scrollRef: // If no scrollRef is provided, assume the collection ref is the scrollable region\n scrollRef = ref } = options;\n let { direction: direction } = $eCAIO$useLocale();\n let onKeyDown = (e)=>{\n // Prevent option + tab from doing anything since it doesn't move focus to the cells, only buttons/checkboxes\n if (e.altKey && e.key === 'Tab') e.preventDefault();\n // Keyboard events bubble through portals. Don't handle keyboard events\n // for elements outside the collection (e.g. menus).\n if (!ref.current.contains(e.target)) return;\n const navigateToKey = (key, childFocus)=>{\n if (key != null) {\n manager.setFocusedKey(key, childFocus);\n if (e.shiftKey && manager.selectionMode === 'multiple') manager.extendSelection(key);\n else if (selectOnFocus && !$feb5ffebff200149$export$d3e3bd3e26688c04(e)) manager.replaceSelection(key);\n }\n };\n switch(e.key){\n case 'ArrowDown':\n if (delegate.getKeyBelow) {\n var ref4, ref1;\n e.preventDefault();\n let nextKey = manager.focusedKey != null ? delegate.getKeyBelow(manager.focusedKey) : (ref4 = delegate.getFirstKey) === null || ref4 === void 0 ? void 0 : ref4.call(delegate);\n if (nextKey == null && shouldFocusWrap) nextKey = (ref1 = delegate.getFirstKey) === null || ref1 === void 0 ? void 0 : ref1.call(delegate, manager.focusedKey);\n navigateToKey(nextKey);\n }\n break;\n case 'ArrowUp':\n if (delegate.getKeyAbove) {\n var ref2, ref3;\n e.preventDefault();\n let nextKey = manager.focusedKey != null ? delegate.getKeyAbove(manager.focusedKey) : (ref2 = delegate.getLastKey) === null || ref2 === void 0 ? void 0 : ref2.call(delegate);\n if (nextKey == null && shouldFocusWrap) nextKey = (ref3 = delegate.getLastKey) === null || ref3 === void 0 ? void 0 : ref3.call(delegate, manager.focusedKey);\n navigateToKey(nextKey);\n }\n break;\n case 'ArrowLeft':\n if (delegate.getKeyLeftOf) {\n e.preventDefault();\n let nextKey = delegate.getKeyLeftOf(manager.focusedKey);\n navigateToKey(nextKey, direction === 'rtl' ? 'first' : 'last');\n }\n break;\n case 'ArrowRight':\n if (delegate.getKeyRightOf) {\n e.preventDefault();\n let nextKey = delegate.getKeyRightOf(manager.focusedKey);\n navigateToKey(nextKey, direction === 'rtl' ? 'last' : 'first');\n }\n break;\n case 'Home':\n if (delegate.getFirstKey) {\n e.preventDefault();\n let firstKey = delegate.getFirstKey(manager.focusedKey, $feb5ffebff200149$export$16792effe837dba3(e));\n manager.setFocusedKey(firstKey);\n if ($feb5ffebff200149$export$16792effe837dba3(e) && e.shiftKey && manager.selectionMode === 'multiple') manager.extendSelection(firstKey);\n else if (selectOnFocus) manager.replaceSelection(firstKey);\n }\n break;\n case 'End':\n if (delegate.getLastKey) {\n e.preventDefault();\n let lastKey = delegate.getLastKey(manager.focusedKey, $feb5ffebff200149$export$16792effe837dba3(e));\n manager.setFocusedKey(lastKey);\n if ($feb5ffebff200149$export$16792effe837dba3(e) && e.shiftKey && manager.selectionMode === 'multiple') manager.extendSelection(lastKey);\n else if (selectOnFocus) manager.replaceSelection(lastKey);\n }\n break;\n case 'PageDown':\n if (delegate.getKeyPageBelow) {\n e.preventDefault();\n let nextKey = delegate.getKeyPageBelow(manager.focusedKey);\n navigateToKey(nextKey);\n }\n break;\n case 'PageUp':\n if (delegate.getKeyPageAbove) {\n e.preventDefault();\n let nextKey = delegate.getKeyPageAbove(manager.focusedKey);\n navigateToKey(nextKey);\n }\n break;\n case 'a':\n if ($feb5ffebff200149$export$16792effe837dba3(e) && manager.selectionMode === 'multiple' && disallowSelectAll !== true) {\n e.preventDefault();\n manager.selectAll();\n }\n break;\n case 'Escape':\n e.preventDefault();\n if (!disallowEmptySelection) manager.clearSelection();\n break;\n case 'Tab':\n if (!allowsTabNavigation) {\n // There may be elements that are \"tabbable\" inside a collection (e.g. in a grid cell).\n // However, collections should be treated as a single tab stop, with arrow key navigation internally.\n // We don't control the rendering of these, so we can't override the tabIndex to prevent tabbing.\n // Instead, we handle the Tab key, and move focus manually to the first/last tabbable element\n // in the collection, so that the browser default behavior will apply starting from that element\n // rather than the currently focused one.\n if (e.shiftKey) ref.current.focus();\n else {\n let walker = $eCAIO$getFocusableTreeWalker(ref.current, {\n tabbable: true\n });\n let next;\n let last;\n do {\n last = walker.lastChild();\n if (last) next = last;\n }while (last)\n if (next && !next.contains(document.activeElement)) $eCAIO$focusWithoutScrolling(next);\n }\n break;\n }\n }\n };\n // Store the scroll position so we can restore it later.\n let scrollPos = $eCAIO$useRef({\n top: 0,\n left: 0\n });\n $eCAIO$useEvent(scrollRef, 'scroll', isVirtualized ? null : ()=>{\n scrollPos.current = {\n top: scrollRef.current.scrollTop,\n left: scrollRef.current.scrollLeft\n };\n });\n let onFocus = (e)=>{\n if (manager.isFocused) {\n // If a focus event bubbled through a portal, reset focus state.\n if (!e.currentTarget.contains(e.target)) manager.setFocused(false);\n return;\n }\n // Focus events can bubble through portals. Ignore these events.\n if (!e.currentTarget.contains(e.target)) return;\n manager.setFocused(true);\n if (manager.focusedKey == null) {\n let navigateToFirstKey = (key)=>{\n if (key != null) {\n manager.setFocusedKey(key);\n if (selectOnFocus) manager.replaceSelection(key);\n }\n };\n // If the user hasn't yet interacted with the collection, there will be no focusedKey set.\n // Attempt to detect whether the user is tabbing forward or backward into the collection\n // and either focus the first or last item accordingly.\n let relatedTarget = e.relatedTarget;\n var _lastSelectedKey, _firstSelectedKey;\n if (relatedTarget && e.currentTarget.compareDocumentPosition(relatedTarget) & Node.DOCUMENT_POSITION_FOLLOWING) navigateToFirstKey((_lastSelectedKey = manager.lastSelectedKey) !== null && _lastSelectedKey !== void 0 ? _lastSelectedKey : delegate.getLastKey());\n else navigateToFirstKey((_firstSelectedKey = manager.firstSelectedKey) !== null && _firstSelectedKey !== void 0 ? _firstSelectedKey : delegate.getFirstKey());\n } else if (!isVirtualized) {\n // Restore the scroll position to what it was before.\n scrollRef.current.scrollTop = scrollPos.current.top;\n scrollRef.current.scrollLeft = scrollPos.current.left;\n // Refocus and scroll the focused item into view if it exists within the scrollable region.\n let element = scrollRef.current.querySelector(`[data-key=\"${manager.focusedKey}\"]`);\n if (element) {\n // This prevents a flash of focus on the first/last element in the collection\n $eCAIO$focusWithoutScrolling(element);\n $eCAIO$scrollIntoView(scrollRef.current, element);\n }\n }\n };\n let onBlur = (e)=>{\n // Don't set blurred and then focused again if moving focus within the collection.\n if (!e.currentTarget.contains(e.relatedTarget)) manager.setFocused(false);\n };\n const autoFocusRef = $eCAIO$useRef(autoFocus);\n $eCAIO$useEffect(()=>{\n if (autoFocusRef.current) {\n let focusedKey = null;\n // Check focus strategy to determine which item to focus\n if (autoFocus === 'first') focusedKey = delegate.getFirstKey();\n if (autoFocus === 'last') focusedKey = delegate.getLastKey();\n // If there are any selected keys, make the first one the new focus target\n let selectedKeys = manager.selectedKeys;\n if (selectedKeys.size) focusedKey = selectedKeys.values().next().value;\n manager.setFocused(true);\n manager.setFocusedKey(focusedKey);\n // If no default focus key is selected, focus the collection itself.\n if (focusedKey == null && !shouldUseVirtualFocus) $eCAIO$focusSafely(ref.current);\n }\n autoFocusRef.current = false;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n // If not virtualized, scroll the focused element into view when the focusedKey changes.\n // When virtualized, Virtualizer handles this internally.\n $eCAIO$useEffect(()=>{\n if (!isVirtualized && manager.focusedKey && (scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current)) {\n let element = scrollRef.current.querySelector(`[data-key=\"${manager.focusedKey}\"]`);\n if (element) $eCAIO$scrollIntoView(scrollRef.current, element);\n }\n }, [\n isVirtualized,\n scrollRef,\n manager.focusedKey\n ]);\n let handlers = {\n onKeyDown: onKeyDown,\n onFocus: onFocus,\n onBlur: onBlur,\n onMouseDown (e) {\n // Ignore events that bubbled through portals.\n if (scrollRef.current === e.target) // Prevent focus going to the collection when clicking on the scrollbar.\n e.preventDefault();\n }\n };\n let { typeSelectProps: typeSelectProps } = $fb3050f43d946246$export$e32c88dfddc6e1d8({\n keyboardDelegate: delegate,\n selectionManager: manager\n });\n if (!disallowTypeAhead) handlers = $eCAIO$mergeProps(typeSelectProps, handlers);\n // If nothing is focused within the collection, make the collection itself tabbable.\n // This will be marshalled to either the first or last item depending on where focus came from.\n // If using virtual focus, don't set a tabIndex at all so that VoiceOver on iOS 14 doesn't try\n // to move real DOM focus to the element anyway.\n let tabIndex;\n if (!shouldUseVirtualFocus) tabIndex = manager.focusedKey == null ? 0 : -1;\n return {\n collectionProps: {\n ...handlers,\n tabIndex: tabIndex\n }\n };\n}\n\n\n\n\n\n\n\nfunction $880e95eb8b93ba9a$export$ecf600387e221c37(options) {\n let { selectionManager: manager , key: key , ref: ref , shouldSelectOnPressUp: shouldSelectOnPressUp , isVirtualized: isVirtualized , shouldUseVirtualFocus: shouldUseVirtualFocus , focus: focus , isDisabled: isDisabled , onAction: onAction , allowsDifferentPressOrigin: allowsDifferentPressOrigin } = options;\n let onSelect = (e)=>{\n if (e.pointerType === 'keyboard' && $feb5ffebff200149$export$d3e3bd3e26688c04(e)) manager.toggleSelection(key);\n else {\n if (manager.selectionMode === 'none') return;\n if (manager.selectionMode === 'single') {\n if (manager.isSelected(key) && !manager.disallowEmptySelection) manager.toggleSelection(key);\n else manager.replaceSelection(key);\n } else if (e && e.shiftKey) manager.extendSelection(key);\n else if (manager.selectionBehavior === 'toggle' || e && ($feb5ffebff200149$export$16792effe837dba3(e) || e.pointerType === 'touch' || e.pointerType === 'virtual')) // if touch or virtual (VO) then we just want to toggle, otherwise it's impossible to multi select because they don't have modifier keys\n manager.toggleSelection(key);\n else manager.replaceSelection(key);\n }\n };\n // Focus the associated DOM node when this item becomes the focusedKey\n $eCAIO$useEffect(()=>{\n let isFocused = key === manager.focusedKey;\n if (isFocused && manager.isFocused && !shouldUseVirtualFocus && document.activeElement !== ref.current) {\n if (focus) focus();\n else $eCAIO$focusSafely(ref.current);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n ref,\n key,\n manager.focusedKey,\n manager.childFocusStrategy,\n manager.isFocused,\n shouldUseVirtualFocus\n ]);\n isDisabled = isDisabled || manager.isDisabled(key);\n // Set tabIndex to 0 if the element is focused, or -1 otherwise so that only the last focused\n // item is tabbable. If using virtual focus, don't set a tabIndex at all so that VoiceOver\n // on iOS 14 doesn't try to move real DOM focus to the item anyway.\n let itemProps = {\n };\n if (!shouldUseVirtualFocus && !isDisabled) itemProps = {\n tabIndex: key === manager.focusedKey ? 0 : -1,\n onFocus (e) {\n if (e.target === ref.current) manager.setFocusedKey(key);\n }\n };\n else if (isDisabled) itemProps.onMouseDown = (e)=>{\n // Prevent focus going to the body when clicking on a disabled item.\n e.preventDefault();\n };\n // With checkbox selection, onAction (i.e. navigation) becomes primary, and occurs on a single click of the row.\n // Clicking the checkbox enters selection mode, after which clicking anywhere on any row toggles selection for that row.\n // With highlight selection, onAction is secondary, and occurs on double click. Single click selects the row.\n // With touch, onAction occurs on single tap, and long press enters selection mode.\n let allowsSelection = !isDisabled && manager.canSelectItem(key);\n let allowsActions = onAction && !isDisabled;\n let hasPrimaryAction = allowsActions && (manager.selectionBehavior === 'replace' ? !allowsSelection : manager.isEmpty);\n let hasSecondaryAction = allowsActions && allowsSelection && manager.selectionBehavior === 'replace';\n let hasAction = hasPrimaryAction || hasSecondaryAction;\n let modality = $eCAIO$useRef(null);\n let longPressEnabled = hasAction && allowsSelection;\n let longPressEnabledOnPressStart = $eCAIO$useRef(false);\n let hadPrimaryActionOnPressStart = $eCAIO$useRef(false);\n // By default, selection occurs on pointer down. This can be strange if selecting an\n // item causes the UI to disappear immediately (e.g. menus).\n // If shouldSelectOnPressUp is true, we use onPressUp instead of onPressStart.\n // onPress requires a pointer down event on the same element as pointer up. For menus,\n // we want to be able to have the pointer down on the trigger that opens the menu and\n // the pointer up on the menu item rather than requiring a separate press.\n // For keyboard events, selection still occurs on key down.\n let itemPressProps = {\n };\n if (shouldSelectOnPressUp) {\n itemPressProps.onPressStart = (e)=>{\n modality.current = e.pointerType;\n longPressEnabledOnPressStart.current = longPressEnabled;\n if (e.pointerType === 'keyboard' && (!hasAction || $880e95eb8b93ba9a$var$isSelectionKey())) onSelect(e);\n };\n // If allowsDifferentPressOrigin, make selection happen on pressUp (e.g. open menu on press down, selection on menu item happens on press up.)\n // Otherwise, have selection happen onPress (prevents listview row selection when clicking on interactable elements in the row)\n if (!allowsDifferentPressOrigin) itemPressProps.onPress = (e)=>{\n if (hasPrimaryAction || hasSecondaryAction && e.pointerType !== 'mouse') {\n if (e.pointerType === 'keyboard' && !$880e95eb8b93ba9a$var$isActionKey()) return;\n onAction();\n } else if (e.pointerType !== 'keyboard') onSelect(e);\n };\n else {\n itemPressProps.onPressUp = (e)=>{\n if (e.pointerType !== 'keyboard') onSelect(e);\n };\n itemPressProps.onPress = hasPrimaryAction ? ()=>onAction()\n : null;\n }\n } else {\n itemPressProps.onPressStart = (e)=>{\n modality.current = e.pointerType;\n longPressEnabledOnPressStart.current = longPressEnabled;\n hadPrimaryActionOnPressStart.current = hasPrimaryAction;\n // Select on mouse down unless there is a primary action which will occur on mouse up.\n // For keyboard, select on key down. If there is an action, the Space key selects on key down,\n // and the Enter key performs onAction on key up.\n if (e.pointerType === 'mouse' && !hasPrimaryAction || e.pointerType === 'keyboard' && (!onAction || $880e95eb8b93ba9a$var$isSelectionKey())) onSelect(e);\n };\n itemPressProps.onPress = (e)=>{\n // Selection occurs on touch up. Primary actions always occur on pointer up.\n // Both primary and secondary actions occur on Enter key up. The only exception\n // is secondary actions, which occur on double click with a mouse.\n if (e.pointerType === 'touch' || e.pointerType === 'pen' || e.pointerType === 'virtual' || e.pointerType === 'keyboard' && hasAction && $880e95eb8b93ba9a$var$isActionKey() || e.pointerType === 'mouse' && hadPrimaryActionOnPressStart.current) {\n if (hasAction) onAction();\n else onSelect(e);\n }\n };\n }\n if (!isVirtualized) itemProps['data-key'] = key;\n itemPressProps.preventFocusOnPress = shouldUseVirtualFocus;\n let { pressProps: pressProps , isPressed: isPressed } = $eCAIO$usePress(itemPressProps);\n // Double clicking with a mouse with selectionBehavior = 'replace' performs an action.\n let onDoubleClick = hasSecondaryAction ? (e)=>{\n if (modality.current === 'mouse') {\n e.stopPropagation();\n e.preventDefault();\n onAction();\n }\n } : undefined;\n // Long pressing an item with touch when selectionBehavior = 'replace' switches the selection behavior\n // to 'toggle'. This changes the single tap behavior from performing an action (i.e. navigating) to\n // selecting, and may toggle the appearance of a UI affordance like checkboxes on each item.\n let { longPressProps: longPressProps } = $eCAIO$useLongPress({\n isDisabled: !longPressEnabled,\n onLongPress (e) {\n if (e.pointerType === 'touch') {\n onSelect(e);\n manager.setSelectionBehavior('toggle');\n }\n }\n });\n // Prevent native drag and drop on long press if we also select on long press.\n // Once the user is in selection mode, they can long press again to drag.\n // Use a capturing listener to ensure this runs before useDrag, regardless of\n // the order the props get merged.\n let onDragStartCapture = (e)=>{\n if (modality.current === 'touch' && longPressEnabledOnPressStart.current) e.preventDefault();\n };\n return {\n itemProps: $eCAIO$mergeProps(itemProps, allowsSelection || hasPrimaryAction ? pressProps : {\n }, longPressEnabled ? longPressProps : {\n }, {\n onDoubleClick: onDoubleClick,\n onDragStartCapture: onDragStartCapture\n }),\n isPressed: isPressed,\n isSelected: manager.isSelected(key),\n isDisabled: isDisabled,\n allowsSelection: allowsSelection,\n hasAction: hasAction\n };\n}\nfunction $880e95eb8b93ba9a$var$isActionKey() {\n let event = window.event;\n return (event === null || event === void 0 ? void 0 : event.key) === 'Enter';\n}\nfunction $880e95eb8b93ba9a$var$isSelectionKey() {\n let event = window.event;\n return (event === null || event === void 0 ? void 0 : event.key) === ' ' || (event === null || event === void 0 ? void 0 : event.code) === 'Space';\n}\n\n\n\nclass $2a25aae57d74318e$export$a05409b8bb224a5a {\n getKeyBelow(key) {\n key = this.collection.getKeyAfter(key);\n while(key != null){\n let item = this.collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(key)) return key;\n key = this.collection.getKeyAfter(key);\n }\n }\n getKeyAbove(key) {\n key = this.collection.getKeyBefore(key);\n while(key != null){\n let item = this.collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(key)) return key;\n key = this.collection.getKeyBefore(key);\n }\n }\n getFirstKey() {\n let key = this.collection.getFirstKey();\n while(key != null){\n let item = this.collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(key)) return key;\n key = this.collection.getKeyAfter(key);\n }\n }\n getLastKey() {\n let key = this.collection.getLastKey();\n while(key != null){\n let item = this.collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(key)) return key;\n key = this.collection.getKeyBefore(key);\n }\n }\n getItem(key) {\n return this.ref.current.querySelector(`[data-key=\"${key}\"]`);\n }\n getKeyPageAbove(key) {\n let menu = this.ref.current;\n let item = this.getItem(key);\n if (!item) return null;\n let pageY = Math.max(0, item.offsetTop + item.offsetHeight - menu.offsetHeight);\n while(item && item.offsetTop > pageY){\n key = this.getKeyAbove(key);\n item = this.getItem(key);\n }\n return key;\n }\n getKeyPageBelow(key) {\n let menu = this.ref.current;\n let item = this.getItem(key);\n if (!item) return null;\n let pageY = Math.min(menu.scrollHeight, item.offsetTop - item.offsetHeight + menu.offsetHeight);\n while(item && item.offsetTop < pageY){\n key = this.getKeyBelow(key);\n item = this.getItem(key);\n }\n return key;\n }\n getKeyForSearch(search, fromKey) {\n if (!this.collator) return null;\n let collection = this.collection;\n let key = fromKey || this.getFirstKey();\n while(key != null){\n let item = collection.getItem(key);\n let substring = item.textValue.slice(0, search.length);\n if (item.textValue && this.collator.compare(substring, search) === 0) return key;\n key = this.getKeyBelow(key);\n }\n return null;\n }\n constructor(collection, disabledKeys, ref, collator){\n this.collection = collection;\n this.disabledKeys = disabledKeys;\n this.ref = ref;\n this.collator = collator;\n }\n}\n\n\n\n\nfunction $982254629710d113$export$b95089534ab7c1fd(props) {\n let { selectionManager: selectionManager , collection: collection , disabledKeys: disabledKeys , ref: ref , keyboardDelegate: keyboardDelegate , autoFocus: autoFocus , shouldFocusWrap: shouldFocusWrap , isVirtualized: isVirtualized , disallowEmptySelection: disallowEmptySelection , selectOnFocus: selectOnFocus = selectionManager.selectionBehavior === 'replace' , disallowTypeAhead: disallowTypeAhead , shouldUseVirtualFocus: shouldUseVirtualFocus , allowsTabNavigation: allowsTabNavigation } = props;\n // By default, a KeyboardDelegate is provided which uses the DOM to query layout information (e.g. for page up/page down).\n // When virtualized, the layout object will be passed in as a prop and override this.\n let collator = $eCAIO$useCollator({\n usage: 'search',\n sensitivity: 'base'\n });\n let disabledBehavior = selectionManager.disabledBehavior;\n let delegate = $eCAIO$useMemo(()=>keyboardDelegate || new $2a25aae57d74318e$export$a05409b8bb224a5a(collection, disabledBehavior === 'selection' ? new Set() : disabledKeys, ref, collator)\n , [\n keyboardDelegate,\n collection,\n disabledKeys,\n ref,\n collator,\n disabledBehavior\n ]);\n let { collectionProps: collectionProps } = $ae20dd8cbca75726$export$d6daf82dcd84e87c({\n ref: ref,\n selectionManager: selectionManager,\n keyboardDelegate: delegate,\n autoFocus: autoFocus,\n shouldFocusWrap: shouldFocusWrap,\n disallowEmptySelection: disallowEmptySelection,\n selectOnFocus: selectOnFocus,\n disallowTypeAhead: disallowTypeAhead,\n shouldUseVirtualFocus: shouldUseVirtualFocus,\n allowsTabNavigation: allowsTabNavigation,\n isVirtualized: isVirtualized,\n scrollRef: ref\n });\n return {\n listProps: collectionProps\n };\n}\n\n\n\n\n\n\nexport {$ae20dd8cbca75726$export$d6daf82dcd84e87c as useSelectableCollection, $880e95eb8b93ba9a$export$ecf600387e221c37 as useSelectableItem, $982254629710d113$export$b95089534ab7c1fd as useSelectableList, $2a25aae57d74318e$export$a05409b8bb224a5a as ListKeyboardDelegate, $fb3050f43d946246$export$e32c88dfddc6e1d8 as useTypeSelect};\n//# sourceMappingURL=module.js.map\n","import {filterDOMProps as $frWMC$filterDOMProps, useId as $frWMC$useId, mergeProps as $frWMC$mergeProps, useSlotId as $frWMC$useSlotId, isMac as $frWMC$isMac, isWebKit as $frWMC$isWebKit} from \"@react-aria/utils\";\nimport {useFocusWithin as $frWMC$useFocusWithin, useHover as $frWMC$useHover, isFocusVisible as $frWMC$isFocusVisible} from \"@react-aria/interactions\";\nimport {useLabel as $frWMC$useLabel} from \"@react-aria/label\";\nimport {useSelectableList as $frWMC$useSelectableList, useSelectableItem as $frWMC$useSelectableItem} from \"@react-aria/selection\";\nimport {getItemCount as $frWMC$getItemCount} from \"@react-stately/collections\";\n\n\nconst $b1f0cad8af73213b$export$3585ede4d035bf14 = new WeakMap();\nfunction $b1f0cad8af73213b$var$normalizeKey(key) {\n if (typeof key === 'string') return key.replace(/\\s*/g, '');\n return '' + key;\n}\nfunction $b1f0cad8af73213b$export$9145995848b05025(state, itemKey) {\n let data = $b1f0cad8af73213b$export$3585ede4d035bf14.get(state);\n if (!data) throw new Error('Unknown list');\n return `${data.id}-option-${$b1f0cad8af73213b$var$normalizeKey(itemKey)}`;\n}\n\n\n\n\n\n\nfunction $c132121280ec012d$export$50eacbbf140a3141(props, state, ref) {\n let domProps = $frWMC$filterDOMProps(props, {\n labelable: true\n });\n let { listProps: listProps } = $frWMC$useSelectableList({\n ...props,\n ref: ref,\n selectionManager: state.selectionManager,\n collection: state.collection,\n disabledKeys: state.disabledKeys\n });\n let { focusWithinProps: focusWithinProps } = $frWMC$useFocusWithin({\n onFocusWithin: props.onFocus,\n onBlurWithin: props.onBlur,\n onFocusWithinChange: props.onFocusChange\n });\n // Share list id and some props with child options.\n let id = $frWMC$useId(props.id);\n $b1f0cad8af73213b$export$3585ede4d035bf14.set(state, {\n id: id,\n shouldUseVirtualFocus: props.shouldUseVirtualFocus,\n shouldSelectOnPressUp: props.shouldSelectOnPressUp,\n shouldFocusOnHover: props.shouldFocusOnHover,\n isVirtualized: props.isVirtualized,\n onAction: props.onAction\n });\n let { labelProps: labelProps , fieldProps: fieldProps } = $frWMC$useLabel({\n ...props,\n id: id,\n // listbox is not an HTML input element so it\n // shouldn't be labeled by a <label> element.\n labelElementType: 'span'\n });\n return {\n labelProps: labelProps,\n listBoxProps: $frWMC$mergeProps(domProps, focusWithinProps, state.selectionManager.selectionMode === 'multiple' ? {\n 'aria-multiselectable': 'true'\n } : {\n }, {\n role: 'listbox',\n ...$frWMC$mergeProps(fieldProps, listProps)\n })\n };\n}\n\n\n\n\n\n\n\nfunction $293f70390ea03370$export$497855f14858aa34(props, state, ref) {\n let { key: key } = props;\n let data = $b1f0cad8af73213b$export$3585ede4d035bf14.get(state);\n var _isDisabled;\n let isDisabled = (_isDisabled = props.isDisabled) !== null && _isDisabled !== void 0 ? _isDisabled : state.disabledKeys.has(key);\n var _isSelected;\n let isSelected = (_isSelected = props.isSelected) !== null && _isSelected !== void 0 ? _isSelected : state.selectionManager.isSelected(key);\n let isFocused = state.selectionManager.focusedKey === key;\n var _shouldSelectOnPressUp;\n let shouldSelectOnPressUp = (_shouldSelectOnPressUp = props.shouldSelectOnPressUp) !== null && _shouldSelectOnPressUp !== void 0 ? _shouldSelectOnPressUp : data.shouldSelectOnPressUp;\n var _shouldFocusOnHover;\n let shouldFocusOnHover = (_shouldFocusOnHover = props.shouldFocusOnHover) !== null && _shouldFocusOnHover !== void 0 ? _shouldFocusOnHover : data.shouldFocusOnHover;\n var _shouldUseVirtualFocus;\n let shouldUseVirtualFocus = (_shouldUseVirtualFocus = props.shouldUseVirtualFocus) !== null && _shouldUseVirtualFocus !== void 0 ? _shouldUseVirtualFocus : data.shouldUseVirtualFocus;\n var _isVirtualized;\n let isVirtualized = (_isVirtualized = props.isVirtualized) !== null && _isVirtualized !== void 0 ? _isVirtualized : data.isVirtualized;\n let labelId = $frWMC$useSlotId();\n let descriptionId = $frWMC$useSlotId();\n let optionProps = {\n role: 'option',\n 'aria-disabled': isDisabled,\n 'aria-selected': state.selectionManager.selectionMode !== 'none' ? isSelected : undefined\n };\n // Safari with VoiceOver on macOS misreads options with aria-labelledby or aria-label as simply \"text\".\n // We should not map slots to the label and description on Safari and instead just have VoiceOver read the textContent.\n // https://bugs.webkit.org/show_bug.cgi?id=209279\n if (!($frWMC$isMac() && $frWMC$isWebKit())) {\n optionProps['aria-label'] = props['aria-label'];\n optionProps['aria-labelledby'] = labelId;\n optionProps['aria-describedby'] = descriptionId;\n }\n if (isVirtualized) {\n optionProps['aria-posinset'] = state.collection.getItem(key).index + 1;\n optionProps['aria-setsize'] = $frWMC$getItemCount(state.collection);\n }\n let { itemProps: itemProps , isPressed: isPressed , hasAction: hasAction , allowsSelection: allowsSelection } = $frWMC$useSelectableItem({\n selectionManager: state.selectionManager,\n key: key,\n ref: ref,\n shouldSelectOnPressUp: shouldSelectOnPressUp,\n allowsDifferentPressOrigin: shouldSelectOnPressUp && shouldFocusOnHover,\n isVirtualized: isVirtualized,\n shouldUseVirtualFocus: shouldUseVirtualFocus,\n isDisabled: isDisabled,\n onAction: data.onAction ? ()=>data.onAction(key)\n : undefined\n });\n let { hoverProps: hoverProps } = $frWMC$useHover({\n isDisabled: isDisabled || !shouldFocusOnHover,\n onHoverStart () {\n if (!$frWMC$isFocusVisible()) {\n state.selectionManager.setFocused(true);\n state.selectionManager.setFocusedKey(key);\n }\n }\n });\n return {\n optionProps: {\n ...optionProps,\n ...$frWMC$mergeProps(itemProps, hoverProps),\n id: $b1f0cad8af73213b$export$9145995848b05025(state, key)\n },\n labelProps: {\n id: labelId\n },\n descriptionProps: {\n id: descriptionId\n },\n isFocused: isFocused,\n isSelected: isSelected,\n isDisabled: isDisabled,\n isPressed: isPressed,\n allowsSelection: allowsSelection,\n hasAction: hasAction\n };\n}\n\n\n\nfunction $af383d3bef1cfdc9$export$c3f9f39876e4bc7(props) {\n let { heading: heading , 'aria-label': ariaLabel } = props;\n let headingId = $frWMC$useId();\n return {\n itemProps: {\n role: 'presentation'\n },\n headingProps: heading ? {\n // Techincally, listbox cannot contain headings according to ARIA.\n // We hide the heading from assistive technology, and only use it\n // as a label for the nested group.\n id: headingId,\n 'aria-hidden': true\n } : {\n },\n groupProps: {\n role: 'group',\n 'aria-label': ariaLabel,\n 'aria-labelledby': heading ? headingId : undefined\n }\n };\n}\n\n\n\n\n\nexport {$c132121280ec012d$export$50eacbbf140a3141 as useListBox, $293f70390ea03370$export$497855f14858aa34 as useOption, $af383d3bef1cfdc9$export$c3f9f39876e4bc7 as useListBoxSection, $b1f0cad8af73213b$export$3585ede4d035bf14 as listData, $b1f0cad8af73213b$export$9145995848b05025 as getItemId};\n//# sourceMappingURL=module.js.map\n","import React, { memo, useRef, Fragment, useMemo } from 'react'\nimport styled, { css } from 'styled-components'\nimport { ListProps, ListState } from 'react-stately'\nimport { useListBox, useOption } from '@react-aria/listbox'\nimport { mergeProps } from '@react-aria/utils'\nimport { useFocusRing } from '@react-aria/focus'\nimport { px } from '@charcoal-ui/utils'\nimport Icon from '../Icon'\nimport { theme } from '../../styled'\n\nimport type { Node } from '@react-types/shared'\n\ntype ListMode = 'default' | 'separator'\nexport type ListboxProps<T> = Omit<ListProps<T>, 'children'> & {\n state: ListState<T>\n mode?: ListMode\n}\n\nconst Listbox = <T,>({\n state,\n mode = 'default',\n ...props\n}: ListboxProps<T>) => {\n const ref = useRef<HTMLUListElement>(null)\n\n const { listBoxProps } = useListBox(props, state, ref)\n const collection = useMemo(\n () =>\n [...state.collection].map((node, index, self) => ({\n node,\n first: index === 0,\n last: index === self.length - 1,\n })),\n [state.collection]\n )\n\n return (\n <ListboxRoot ref={ref} {...listBoxProps}>\n {collection.map(({ node, last }) => (\n <Fragment key={node.key}>\n <Option item={node} state={state} mode={mode} />\n {!last && mode === 'separator' && <Divider />}\n </Fragment>\n ))}\n </ListboxRoot>\n )\n}\nexport default memo(Listbox)\n\nconst ListboxRoot = styled.ul`\n padding-left: 0;\n margin: 0;\n box-sizing: border-box;\n list-style: none;\n\n ${theme((o) => [\n o.bg.background1,\n o.border.default,\n o.borderRadius(8),\n o.outline.default.focus,\n ])}\n`\n\nconst Divider = styled.div.attrs({ role: 'separator' })`\n display: flex;\n ${theme((o) => [o.padding.horizontal(8)])}\n\n &:before {\n content: '';\n display: block;\n width: 100%;\n height: 1px;\n background: #00000014;\n }\n`\n\ntype OptionProps<T> = {\n item: Node<T>\n state: ListState<T>\n mode?: ListMode\n}\n\nconst Option = <T,>({ item, state, mode }: OptionProps<T>) => {\n const ref = useRef<HTMLLIElement>(null)\n\n const { optionProps, isSelected } = useOption(item, state, ref)\n const { focusProps } = useFocusRing()\n\n return (\n <OptionRoot {...mergeProps(optionProps, focusProps)} ref={ref} mode={mode}>\n <OptionCheckIcon name=\"16/Check\" isSelected={isSelected} />\n <OptionText>{item.rendered}</OptionText>\n </OptionRoot>\n )\n}\n\nconst OptionRoot = styled.li<{ mode?: ListMode }>`\n display: flex;\n align-items: center;\n gap: ${({ theme }) => px(theme.spacing[4])};\n height: 40px;\n cursor: pointer;\n outline: none;\n\n ${({ mode }) =>\n theme((o) => [\n o.padding.horizontal(8),\n mode === 'separator' && o.padding.vertical(4),\n ])}\n\n &:focus {\n ${theme((o) => [o.bg.surface3])}\n }\n`\nconst OptionCheckIcon = styled(Icon)<{ isSelected: boolean }>`\n visibility: hidden;\n\n ${({ isSelected }) =>\n isSelected &&\n css`\n visibility: visible;\n `}\n`\nconst OptionText = styled.span`\n display: block;\n ${theme((o) => [o.typography(14)])}\n`\n","import { FocusScope } from '@react-aria/focus'\nimport { DismissButton, useOverlay } from '@react-aria/overlays'\nimport React, {\n FC,\n useRef,\n useMemo,\n PropsWithChildren,\n memo,\n CSSProperties,\n} from 'react'\nimport { mergeProps } from '@react-aria/utils'\n\ntype Props = PropsWithChildren<{\n open?: boolean\n onClose?: () => void\n style?: CSSProperties\n className?: string\n}>\n\nconst Popover: FC<Props> = ({ open, onClose, children, ...props }) => {\n const ref = useRef<HTMLDivElement>(null)\n\n const { overlayProps } = useOverlay(\n useMemo(\n () => ({\n isOpen: open,\n onClose,\n shouldCloseOnBlur: true,\n isDismissable: true,\n }),\n [onClose, open]\n ),\n ref\n )\n\n return (\n <FocusScope restoreFocus>\n <div {...mergeProps(overlayProps, props)} ref={ref}>\n {children}\n <DismissButton onDismiss={onClose} />\n </div>\n </FocusScope>\n )\n}\n\nexport default memo(Popover)\n","import React, { Key, useMemo, useRef } from 'react'\nimport styled from 'styled-components'\nimport { Item, useSelectState } from 'react-stately'\nimport { disabledSelector } from '@charcoal-ui/utils'\nimport { useVisuallyHidden } from '@react-aria/visually-hidden'\nimport { useSelect, HiddenSelect } from '@react-aria/select'\nimport { useButton } from '@react-aria/button'\nimport { SelectProps } from '@react-types/select'\nimport Listbox, { ListboxProps } from './Listbox'\nimport Popover from './Popover'\nimport Icon from '../Icon'\nimport FieldLabel from '../FieldLabel'\nimport { theme } from '../../styled'\n\nimport type { CollectionBase } from '@react-types/shared'\nimport type { ReactNode } from 'react'\n\ntype LabelProps = {\n readonly showLabel?: boolean\n readonly label: string\n readonly subLabel?: ReactNode\n readonly requiredText?: string\n}\n\ntype Empty = Record<string, unknown>\nexport type DropdownSelectorProps<T extends Empty = Empty> = LabelProps &\n Readonly<CollectionBase<T>> & {\n readonly id?: string\n readonly name?: string\n readonly autoComplete?: string\n readonly placeholder?: string\n readonly className?: string\n readonly disabled?: boolean\n readonly required?: boolean\n readonly invalid?: boolean\n readonly assertiveText?: string\n readonly value?: Key\n readonly defaultValue?: Key\n readonly open?: boolean\n readonly onOpenChange?: (isOpen?: boolean) => void\n readonly onChange?: (key: Key) => void\n readonly mode?: ListboxProps<T>['mode']\n }\n\nconst DropdownSelector = <T extends Record<string, unknown>>({\n open,\n className,\n label = '',\n requiredText = '',\n subLabel,\n assertiveText,\n autoComplete,\n invalid = false,\n disabled = false,\n required = false,\n showLabel = false,\n mode = 'default',\n ...props\n}: DropdownSelectorProps<T>) => {\n const { visuallyHiddenProps } = useVisuallyHidden()\n const triggerRef = useRef<HTMLButtonElement>(null)\n const selectProps = useMemo<SelectProps<T>>(\n () => ({\n ...props,\n label,\n isOpen: open,\n isDisabled: disabled,\n isRequired: required,\n errorMessage: invalid && assertiveText,\n validationState: invalid ? 'invalid' : 'valid',\n onSelectionChange: props.onChange,\n selectedKey: props.value,\n defaultSelectedKey: props.defaultValue,\n }),\n [assertiveText, disabled, invalid, label, open, props, required]\n )\n const state = useSelectState<T>(selectProps)\n\n const {\n labelProps,\n triggerProps,\n valueProps,\n menuProps,\n errorMessageProps,\n descriptionProps,\n } = useSelect<T>(selectProps, state, triggerRef)\n\n const { buttonProps } = useButton(triggerProps, triggerRef)\n\n const hasAssertiveText =\n assertiveText !== undefined && assertiveText.length > 0\n\n return (\n <DropdownSelectorRoot aria-disabled={disabled} className={className}>\n <DropdownFieldLabel\n label={label}\n required={required}\n requiredText={requiredText}\n subLabel={subLabel}\n {...labelProps}\n {...(!showLabel ? visuallyHiddenProps : {})}\n />\n <HiddenSelect\n state={state}\n triggerRef={triggerRef}\n label={label}\n name={props.name}\n isDisabled={disabled}\n autoComplete={autoComplete}\n />\n <DropdownButtonWrapper>\n <DropdownButton {...buttonProps} ref={triggerRef} invalid={invalid}>\n <DropdownButtonText {...valueProps}>\n {/*\n * react-stately の useSelectState から取得される selectedItem の型が常に\n * Node<T> であるが runtime では null が帰ってくることがある\n */}\n {/* eslint-disable-next-line @typescript-eslint/strict-boolean-expressions,@typescript-eslint/no-unnecessary-condition*/}\n {state.selectedItem\n ? state.selectedItem.rendered\n : props.placeholder}\n </DropdownButtonText>\n\n <Icon name=\"16/Menu\" />\n </DropdownButton>\n {state.isOpen && (\n <DropdownPopover open={state.isOpen} onClose={() => state.close()}>\n <Listbox {...menuProps} state={state} mode={mode} />\n </DropdownPopover>\n )}\n </DropdownButtonWrapper>\n\n {hasAssertiveText && (\n <AssertiveText\n invalid={invalid}\n {...(invalid ? errorMessageProps : descriptionProps)}\n >\n {assertiveText}\n </AssertiveText>\n )}\n </DropdownSelectorRoot>\n )\n}\n\nexport default DropdownSelector\nexport const DropdownSelectorItem = Item\n\nconst DropdownSelectorRoot = styled.div`\n position: relative;\n display: inline-block;\n\n ${disabledSelector} {\n cursor: default;\n ${theme((o) => o.disabled)}\n }\n`\n\nconst DropdownFieldLabel = styled(FieldLabel)`\n width: 100%;\n\n ${theme((o) => o.margin.bottom(8))}\n`\n\nconst DropdownButtonWrapper = styled.div`\n position: relative;\n`\n\nconst DropdownButton = styled.button<{ invalid: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n height: 40px;\n width: 288px;\n box-sizing: border-box;\n cursor: pointer;\n\n ${disabledSelector} {\n cursor: default;\n }\n\n ${({ invalid }) =>\n theme((o) => [\n o.border.default,\n o.padding.horizontal(8),\n o.outline.default.focus,\n o.bg.surface3,\n o.borderRadius(4),\n invalid && o.outline.assertive,\n ])}\n`\n\nconst DropdownButtonText = styled.span`\n text-align: left;\n\n ${theme((o) => [o.typography(14), o.font.text2])}\n`\n\nconst AssertiveText = styled.div<{ invalid: boolean }>`\n ${({ invalid }) =>\n theme((o) => [\n o.typography(14),\n o.margin.top(8),\n invalid && o.font.assertive,\n ])}\n`\n\nconst DropdownPopover = styled(Popover)`\n position: absolute;\n width: 100%;\n\n top: 100%;\n margin-top: 2px;\n`\n","import React, { createContext, useContext } from 'react'\nimport { RadioGroupState } from 'react-stately'\n\nconst RadioContext = createContext<RadioGroupState | null>(null)\n\ntype RadioProviderProps = React.PropsWithChildren<{\n value: RadioGroupState\n}>\nexport const RadioProvider: React.FC<RadioProviderProps> = ({\n value,\n children,\n}) => {\n return <RadioContext.Provider value={value}>{children}</RadioContext.Provider>\n}\nexport const useRadioContext = () => {\n const state = useContext(RadioContext)\n\n if (state === null)\n throw new Error('`<RadioProvider>` is not likely mounted.')\n\n return state\n}\n","import React, { forwardRef, memo, useMemo, useRef } from 'react'\nimport { useRadioGroupState } from 'react-stately'\nimport {\n AriaRadioGroupProps,\n AriaRadioProps,\n useRadio,\n useRadioGroup,\n} from '@react-aria/radio'\nimport styled from 'styled-components'\nimport { disabledSelector } from '@charcoal-ui/utils'\n\nimport { RadioProvider, useRadioContext } from './RadioGroupContext'\nimport { theme } from '../../styled'\n\ntype SegmentedControlItem = {\n label: React.ReactNode\n value: string\n disabled?: boolean\n}\n\nexport type SegmentedControlProps = {\n readonly id?: string\n readonly name?: string\n readonly disabled?: boolean\n readonly readonly?: boolean\n readonly required?: boolean\n\n readonly value?: string\n readonly defaultValue?: string\n\n readonly data: string[] | SegmentedControlItem[]\n\n readonly onChange?: (value: string) => void\n}\n\nconst SegmentedControl = forwardRef<HTMLDivElement, SegmentedControlProps>(\n function SegmentedControlInner(props, ref) {\n const ariaRadioGroupProps = useMemo<AriaRadioGroupProps>(\n () => ({\n ...props,\n isDisabled: props.disabled,\n isReadOnly: props.readonly,\n isRequired: props.required,\n }),\n [props]\n )\n const state = useRadioGroupState(ariaRadioGroupProps)\n const { radioGroupProps } = useRadioGroup(ariaRadioGroupProps, state)\n const segmentedControlItems = useMemo<SegmentedControlItem[]>(() => {\n return props.data.map((d) =>\n typeof d === 'string' ? { value: d, label: d } : d\n )\n }, [props.data])\n\n return (\n <SegmentedControlRoot ref={ref} {...radioGroupProps}>\n <RadioProvider value={state}>\n {segmentedControlItems.map((item) => (\n <Segmented\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n >\n {item.label}\n </Segmented>\n ))}\n </RadioProvider>\n </SegmentedControlRoot>\n )\n }\n)\n\nexport default memo(SegmentedControl)\n\ntype RadioProps = {\n value: string\n disabled?: boolean\n}\n\nconst Segmented: React.FC<RadioProps> = ({ children, ...props }) => {\n const state = useRadioContext()\n const ref = useRef<HTMLInputElement>(null)\n const ariaRadioProps = useMemo<AriaRadioProps>(\n () => ({ ...props, isDisabled: props.disabled }),\n [props]\n )\n\n const { inputProps, isDisabled, isSelected } = useRadio(\n ariaRadioProps,\n state,\n ref\n )\n\n return (\n <SegmentedRoot\n aria-disabled={isDisabled || state.isReadOnly}\n checked={isSelected}\n >\n <SegmentedInput {...inputProps} ref={ref} />\n <RadioLabel>\n <SegmentedLabelInner>{children}</SegmentedLabelInner>\n </RadioLabel>\n </SegmentedRoot>\n )\n}\n\nconst SegmentedControlRoot = styled.div`\n display: inline-flex;\n align-items: center;\n\n ${theme((o) => [o.bg.surface3, o.borderRadius(16)])}\n`\n\nconst SegmentedRoot = styled.label<{ checked?: boolean }>`\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer;\n height: 32px;\n\n ${disabledSelector} {\n cursor: default;\n }\n\n ${({ checked }) =>\n theme((o) => [\n o.padding.horizontal(16),\n o.borderRadius(16),\n o.disabled,\n checked === true && o.bg.brand,\n checked === true ? o.font.text5 : o.font.text2,\n ])}\n`\nconst SegmentedInput = styled.input`\n position: absolute;\n\n height: 0px;\n width: 0px;\n padding: 0;\n margin: 0;\n\n appearance: none;\n box-sizing: border-box;\n overflow: hidden;\n white-space: nowrap;\n opacity: 0;\n`\n\nconst RadioLabel = styled.div`\n background: transparent;\n display: flex;\n align-items: center;\n height: 22px;\n`\nconst SegmentedLabelInner = styled.div`\n ${theme((o) => [o.typography(14)])}\n`\n","import React, { forwardRef, memo, useMemo } from 'react'\nimport styled, { css } from 'styled-components'\nimport { useCheckbox } from '@react-aria/checkbox'\nimport { useObjectRef } from '@react-aria/utils'\nimport { useToggleState } from 'react-stately'\nimport { disabledSelector, px } from '@charcoal-ui/utils'\nimport { theme } from '../../styled'\n\nimport type { AriaCheckboxProps } from '@react-types/checkbox'\nimport Icon from '../Icon'\n\ntype CheckboxLabelProps =\n | {\n children: React.ReactNode\n }\n | {\n label: string\n }\n\nexport type CheckboxProps = CheckboxLabelProps & {\n readonly id?: string\n readonly name?: string\n\n readonly checked?: boolean\n readonly defaultChecked?: boolean\n readonly disabled?: boolean\n readonly readonly?: boolean\n\n readonly onClick?: () => void\n readonly onChange?: (isSelected: boolean) => void\n readonly onBlur?: () => void\n readonly onFocus?: () => void\n}\n\nconst Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n function CheckboxInner(props, ref) {\n const ariaCheckboxProps = useMemo<AriaCheckboxProps>(\n () => ({\n ...props,\n isSelected: props.checked,\n defaultSelected: props.defaultChecked,\n // children がいない場合は aria-label をつけないといけない\n 'aria-label': 'children' in props ? undefined : props.label,\n isDisabled: props.disabled,\n }),\n [props]\n )\n const state = useToggleState(ariaCheckboxProps)\n const objectRef = useObjectRef(ref)\n\n const { inputProps } = useCheckbox(ariaCheckboxProps, state, objectRef)\n const isDisabled = (props.disabled ?? false) || (props.readonly ?? false)\n\n return (\n <InputRoot aria-disabled={isDisabled}>\n <CheckboxInput type=\"checkbox\" {...inputProps} />\n <CheckboxInputOverlay aria-hidden={true} checked={inputProps.checked}>\n <Icon name=\"24/Check\" unsafeNonGuidelineScale={2 / 3} />\n </CheckboxInputOverlay>\n\n {'children' in props && <InputLabel>{props.children}</InputLabel>}\n </InputRoot>\n )\n }\n)\n\nexport default memo(Checkbox)\n\nconst hiddenCss = css`\n visibility: hidden;\n`\n\nconst InputRoot = styled.label`\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer;\n ${disabledSelector} {\n cursor: default;\n }\n\n gap: ${({ theme }) => px(theme.spacing[4])};\n ${theme((o) => [o.disabled])}\n`\n\nconst CheckboxInput = styled.input`\n &[type='checkbox'] {\n appearance: none;\n display: block;\n cursor: pointer;\n margin: 0;\n width: 20px;\n height: 20px;\n\n &:checked {\n ${theme((o) => o.bg.brand.hover.press)}\n }\n &:not(:checked) {\n border-width: 2px;\n border-style: solid;\n border-color: ${({ theme }) => theme.color.text4};\n }\n ${theme((o) => [o.outline.default.focus, o.borderRadius(4)])}\n }\n`\nconst CheckboxInputOverlay = styled.div<{ checked?: boolean }>`\n position: absolute;\n top: -2px;\n left: -2px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ${theme((o) => [o.width.px(24), o.height.px(24), o.font.text5])}\n\n ${({ checked }) => checked !== true && hiddenCss};\n`\n\nconst InputLabel = styled.div`\n ${theme((o) => [o.typography(14)])}\n`\n"],"names":["DefaultLink","React","forwardRef","ref","to","children","rest","DefaultValue","Link","ComponentAbstractionContext","createContext","ComponentAbstraction","components","useComponentAbstraction","useContext","unreachable","value","Error","arguments","length","JSON","stringify","theme","createTheme","styled","Clickable","props","onClick","disabled","undefined","Button","clickableCss","css","disabledSelector","button","A","span","variant","size","fixed","StyledButton","withConfig","shouldForwardProp","prop","attrs","styledProps","p","o","font","hover","press","bg","background","typography","bold","preserveHalfLeading","padding","horizontal","borderRadius","outline","focus","height","variantToProps","sizeToProps","IconButton","IconButtonInner","icon","validateIconSize","StyledIconButton","width","requiredIconSize","result","exec","iconSize","console","warn","Radio","forceChecked","RadioGroupContext","name","selected","isParentDisabled","readonly","hasError","onChange","warning","isSelected","isDisabled","isReadonly","handleChange","useCallback","e","currentTarget","RadioLabel","RadioRoot","label","px","spacing","RadioInput","input","type","text5","assertive","color","text4","brand","div","StyledRadioGroup","RadioGroup","className","next","MultiSelectGroupContext","MultiSelect","parentDisabled","parentOnChange","includes","event","HTMLInputElement","checked","Boolean","MultiSelectRoot","MultiSelectLabel","text1","MultiSelectInput","overlay","text3","surface4","MultiSelectInputOverlay","MultiSelectGroup","ariaLabel","payload","index","indexOf","slice","Array","from","Set","SwitchCheckbox","ariaSwitchProps","useMemo","state","useToggleState","useRef","useSwitch","inputProps","Label","LabelInner","SwitchInput","FieldLabel","style","required","requiredText","subLabel","labelProps","RequiredText","SubLabelClickable","FieldLabelWrapper","margin","left","mergeRefs","current","countCodePointsInString","string","TextField","multiline","SingleLineTextField","SingleLineTextFieldInner","showLabel","showCount","invalid","assistiveText","maxLength","prefix","suffix","useVisuallyHidden","visuallyHiddenProps","ariaRef","prefixRef","suffixRef","useState","count","setCount","prefixWidth","setPrefixWidth","suffixWidth","setSuffixWidth","nonControlled","useEffect","useTextField","inputElementType","isRequired","validationState","description","errorMessage","descriptionProps","errorMessageProps","prefixObserver","ResizeObserver","entries","contentRect","suffixObserver","observe","disconnect","MultiLineTextField","MultiLineTextFieldInner","autoHeight","rows","initialRows","textareaRef","setRows","syncHeight","textarea","match","TextFieldRoot","opacity","elementEffect","TextFieldLabel","bottom","StyledInputContainer","PrefixContainer","SuffixContainer","Affix","text2","StyledInput","extraLeftPadding","extraRightPadding","surface3","StyledTextareaContainer","StyledTextarea","noBottomPadding","SingleLineCounter","MultiLineCounter","AssistiveText","top","Icon","IconInner","scale","unsafeNonGuidelineScale","DEFAULT_Z_INDEX","Modal","zIndex","title","bottomSheet","isDismissable","onClose","isOpen","useOverlay","overlayProps","underlayProps","usePreventScroll","useModalOverlay","close","open","setOpen","toggle","modalProps","useDialog","dialogProps","titleProps","useTheme","isMobile","useMedia","maxWidth","breakpoint","screen1","transitionEnabled","transition","useTransition","transform","backgroundColor","enter","leave","config","duration","easing","easings","easeOutQuart","showDismiss","item","Overlay","FocusScope","ModalContext","ModalBackground","animated","ModalDialog","columnSystem","COLUMN_UNIT","GUTTER_UNIT","background1","ModalCrossButton","ModalTitle","ModalHeading","h3","ModalHeader","ModalHeaderRoot","StyledModalTitle","ModalAlign","ModalBody","ModalButtons","LoadingSpinner","transparent","LoadingSpinnerRoot","role","transparentize","scaleout","keyframes","once","LoadingSpinnerIcon","iconRef","useImperativeHandle","restart","dataset","resetAnimation","toVal","mix","k","y","str","isArray","i","tmp","x","$12uGp$useState","$12uGp$useRef","$12uGp$useSSRSafeId","$12uGp$useCallback","$12uGp$useEffect","$iFADg$react","$iFADg$useContext","$eCAIO$useLocale","$eCAIO$getFocusableTreeWalker","$eCAIO$focusWithoutScrolling","$eCAIO$useRef","$eCAIO$useEvent","$eCAIO$scrollIntoView","$eCAIO$useEffect","$eCAIO$focusSafely","$eCAIO$mergeProps","$frWMC$filterDOMProps","$frWMC$useSelectableList","$frWMC$useFocusWithin","$frWMC$useId","$frWMC$useLabel","$frWMC$mergeProps","Listbox","mode","useListBox","listBoxProps","collection","map","node","self","first","last","Fragment","key","memo","ListboxRoot","ul","border","Divider","Option","useOption","optionProps","useFocusRing","focusProps","mergeProps","rendered","OptionRoot","li","vertical","OptionCheckIcon","OptionText","Popover","shouldCloseOnBlur","DismissButton","DropdownSelector","assertiveText","autoComplete","triggerRef","selectProps","onSelectionChange","selectedKey","defaultSelectedKey","defaultValue","useSelectState","useSelect","triggerProps","valueProps","menuProps","useButton","buttonProps","hasAssertiveText","HiddenSelect","selectedItem","placeholder","DropdownSelectorItem","Item","DropdownSelectorRoot","DropdownFieldLabel","DropdownButtonWrapper","DropdownButton","DropdownButtonText","AssertiveText","DropdownPopover","RadioContext","RadioProvider","useRadioContext","SegmentedControl","SegmentedControlInner","ariaRadioGroupProps","isReadOnly","useRadioGroupState","useRadioGroup","radioGroupProps","segmentedControlItems","data","d","Segmented","ariaRadioProps","useRadio","SegmentedControlRoot","SegmentedRoot","SegmentedInput","SegmentedLabelInner","Checkbox","CheckboxInner","ariaCheckboxProps","defaultSelected","defaultChecked","objectRef","useObjectRef","useCheckbox","hiddenCss","InputRoot","CheckboxInput","CheckboxInputOverlay","InputLabel"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}