@redsift/design-system 11.9.4 → 12.0.0-muiv6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/CONTRIBUTING.md +1 -5
  2. package/_internal/Alert2.js +9 -4
  3. package/_internal/Alert2.js.map +1 -1
  4. package/_internal/AppContent.js +9 -4
  5. package/_internal/AppContent.js.map +1 -1
  6. package/_internal/Badge2.js +9 -4
  7. package/_internal/Badge2.js.map +1 -1
  8. package/_internal/Breadcrumbs2.js +9 -4
  9. package/_internal/Breadcrumbs2.js.map +1 -1
  10. package/_internal/Button2.js +9 -4
  11. package/_internal/Button2.js.map +1 -1
  12. package/_internal/ButtonGroup.js +15 -6
  13. package/_internal/ButtonGroup.js.map +1 -1
  14. package/_internal/ButtonLink.js +1 -1
  15. package/_internal/Card2.js +9 -4
  16. package/_internal/Card2.js.map +1 -1
  17. package/_internal/CardActions.js +16 -12
  18. package/_internal/CardActions.js.map +1 -1
  19. package/_internal/CardBody.js +9 -4
  20. package/_internal/CardBody.js.map +1 -1
  21. package/_internal/CardHeader.js +13 -4
  22. package/_internal/CardHeader.js.map +1 -1
  23. package/_internal/Checkbox2.js +9 -4
  24. package/_internal/Checkbox2.js.map +1 -1
  25. package/_internal/CheckboxGroup.js +9 -4
  26. package/_internal/CheckboxGroup.js.map +1 -1
  27. package/_internal/DetailedCard.js +24 -12
  28. package/_internal/DetailedCard.js.map +1 -1
  29. package/_internal/Flexbox2.js +21 -16
  30. package/_internal/Flexbox2.js.map +1 -1
  31. package/_internal/Grid2.js +21 -16
  32. package/_internal/Grid2.js.map +1 -1
  33. package/_internal/GridItem.js +9 -4
  34. package/_internal/GridItem.js.map +1 -1
  35. package/_internal/Heading2.js +9 -4
  36. package/_internal/Heading2.js.map +1 -1
  37. package/_internal/Icon2.js +10 -5
  38. package/_internal/Icon2.js.map +1 -1
  39. package/_internal/IconButton.js +9 -4
  40. package/_internal/IconButton.js.map +1 -1
  41. package/_internal/IconButtonLink.js +1 -1
  42. package/_internal/Item2.js +16 -7
  43. package/_internal/Item2.js.map +1 -1
  44. package/_internal/Link2.js +9 -4
  45. package/_internal/Link2.js.map +1 -1
  46. package/_internal/LinkButton.js +2 -1
  47. package/_internal/LinkButton.js.map +1 -1
  48. package/_internal/Listbox2.js +14 -8
  49. package/_internal/Listbox2.js.map +1 -1
  50. package/_internal/Number2.js +10 -5
  51. package/_internal/Number2.js.map +1 -1
  52. package/_internal/NumberField.js +11 -6
  53. package/_internal/NumberField.js.map +1 -1
  54. package/_internal/Pill2.js +9 -4
  55. package/_internal/Pill2.js.map +1 -1
  56. package/_internal/ProgressBar.js +20 -11
  57. package/_internal/ProgressBar.js.map +1 -1
  58. package/_internal/Radio2.js +9 -4
  59. package/_internal/Radio2.js.map +1 -1
  60. package/_internal/RadioGroup.js +9 -4
  61. package/_internal/RadioGroup.js.map +1 -1
  62. package/_internal/Shield2.js +12 -7
  63. package/_internal/Shield2.js.map +1 -1
  64. package/_internal/SideNavigationMenu.js +1 -1
  65. package/_internal/Skeleton2.js +9 -4
  66. package/_internal/Skeleton2.js.map +1 -1
  67. package/_internal/SkeletonCircle.js +1 -1
  68. package/_internal/SkeletonText.js +1 -1
  69. package/_internal/Spinner2.js +9 -4
  70. package/_internal/Spinner2.js.map +1 -1
  71. package/_internal/Switch2.js +9 -4
  72. package/_internal/Switch2.js.map +1 -1
  73. package/_internal/SwitchGroup.js +9 -4
  74. package/_internal/SwitchGroup.js.map +1 -1
  75. package/_internal/Text2.js +13 -6
  76. package/_internal/Text2.js.map +1 -1
  77. package/_internal/TextArea.js +18 -12
  78. package/_internal/TextArea.js.map +1 -1
  79. package/_internal/TextField.js +12 -6
  80. package/_internal/TextField.js.map +1 -1
  81. package/_internal/_rollupPluginBabelHelpers.js +1 -1
  82. package/_internal/button.js +1 -1
  83. package/_internal/colors.js +1 -1
  84. package/_internal/icon-button.js +1 -1
  85. package/_internal/link.js +1 -1
  86. package/_internal/shared.js +1 -1
  87. package/_internal/styles.js +309 -217
  88. package/_internal/styles.js.map +1 -1
  89. package/_internal/styles2.js +202 -14
  90. package/_internal/styles2.js.map +1 -1
  91. package/_internal/styles3.js +30 -128
  92. package/_internal/styles3.js.map +1 -1
  93. package/_internal/styles4.js +129 -234
  94. package/_internal/styles4.js.map +1 -1
  95. package/_internal/styles5.js +227 -118
  96. package/_internal/styles5.js.map +1 -1
  97. package/_internal/styles6.js +128 -69
  98. package/_internal/styles6.js.map +1 -1
  99. package/_internal/styles7.js +84 -0
  100. package/_internal/styles7.js.map +1 -0
  101. package/_internal/text.js +1 -1
  102. package/_internal/types2.js.map +1 -1
  103. package/_internal/useFocusOnList.js +1 -1
  104. package/_internal/useFocusRing.js +1 -1
  105. package/_internal/useListboxItem.js.map +1 -1
  106. package/_internal/useLocalizedStringFormatter.js +1 -1
  107. package/_internal/useMessageFormatter.js +1 -1
  108. package/_internal/useNumberFormatter.js +1 -1
  109. package/index.d.ts +227 -136
  110. package/index.js +8 -164
  111. package/index.js.map +1 -1
  112. package/package.json +5 -6
@@ -1 +1 @@
1
- {"version":3,"file":"NumberField.js","sources":["../../src/react-aria/react-aria/utils/useId.ts","../../src/react-aria/react-aria/utils/chain.ts","../../src/react-aria/react-aria/utils/mergeProps.ts","../../src/react-aria/react-aria/utils/filterDOMProps.ts","../../src/react-aria/react-aria/utils/focusWithoutScrolling.ts","../../src/react-aria/react-aria/utils/openLink.tsx","../../src/react-aria/react-aria/utils/runAfterTransition.ts","../../src/react-aria/react-aria/utils/useGlobalListeners.ts","../../src/react-aria/react-aria/utils/useLabels.ts","../../src/react-aria/react-aria/utils/useSyncRef.ts","../../src/react-aria/react-aria/utils/useEvent.ts","../../src/react-aria/react-aria/utils/useValueEffect.ts","../../src/react-aria/react-stately/utils/useControlledState.ts","../../src/react-aria/react-stately/utils/number.ts","../../src/react-aria/react-aria/utils/useFormReset.ts","../../src/react-aria/internationalized/number/NumberParser.ts","../../src/react-aria/react-aria/interactions/textSelection.ts","../../src/react-aria/react-aria/interactions/context.ts","../../src/react-aria/react-aria/interactions/usePress.ts","../../src/react-aria/react-aria/interactions/createEventHandler.ts","../../src/react-aria/react-aria/interactions/useKeyboard.ts","../../src/react-aria/react-aria/interactions/useScrollWheel.ts","../../src/react-aria/react-aria/focus/focusSafely.ts","../../src/react-aria/react-aria/focus/useFocusable.tsx","../../src/components/number-field/types.ts","../../src/react-aria/react-stately/form/useFormValidationState.ts","../../src/react-aria/react-stately/numberfield/useNumberFieldState.ts","../../src/react-aria/react-aria/numberfield/intl/index.ts","../../src/react-aria/react-aria/label/useLabel.ts","../../src/react-aria/react-aria/label/useField.ts","../../src/react-aria/react-aria/form/useFormValidation.ts","../../src/react-aria/react-aria/textfield/useTextField.ts","../../src/react-aria/react-aria/textfield/useFormattedTextField.ts","../../src/react-aria/react-aria/live-announcer/LiveAnnouncer.tsx","../../src/react-aria/react-aria/spinbutton/intl/index.ts","../../src/react-aria/react-aria/spinbutton/useSpinButton.ts","../../src/react-aria/react-aria/numberfield/useNumberField.ts","../../src/react-aria/react-aria/button/useButton.ts","../../src/components/number-field/styles.ts","../../src/components/number-field/NumberField.tsx"],"sourcesContent":["/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { useLayoutEffect } from './useLayoutEffect';\nimport { useSSRSafeId } from '../ssr';\nimport { useValueEffect } from './';\n\n// copied from SSRProvider.tsx to reduce exports, if needed again, consider sharing\nlet canUseDOM = Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nlet idsUpdaterMap: Map<string, (v: string) => void> = new Map();\n\n/**\n * If a default is not provided, generate an id.\n * @param defaultId - Default component id.\n */\nexport function useId(defaultId?: string): string {\n let [value, setValue] = useState(defaultId);\n let nextId = useRef(null);\n\n let res = useSSRSafeId(value);\n\n let updateValue = useCallback((val) => {\n nextId.current = val;\n }, []);\n\n if (canUseDOM) {\n idsUpdaterMap.set(res, updateValue);\n }\n\n useLayoutEffect(() => {\n let r = res;\n return () => {\n idsUpdaterMap.delete(r);\n };\n }, [res]);\n\n // This cannot cause an infinite loop because the ref is updated first.\n // eslint-disable-next-line\n useEffect(() => {\n let newId = nextId.current;\n if (newId) {\n nextId.current = null;\n setValue(newId);\n }\n });\n\n return res;\n}\n\n/**\n * Merges two ids.\n * Different ids will trigger a side-effect and re-render components hooked up with `useId`.\n */\nexport function mergeIds(idA: string, idB: string): string {\n if (idA === idB) {\n return idA;\n }\n\n let setIdA = idsUpdaterMap.get(idA);\n if (setIdA) {\n setIdA(idB);\n return idB;\n }\n\n let setIdB = idsUpdaterMap.get(idB);\n if (setIdB) {\n setIdB(idA);\n return idA;\n }\n\n return idB;\n}\n\n/**\n * Used to generate an id, and after render, check if that id is rendered so we know\n * if we can use it in places such as labelledby.\n * @param depArray - When to recalculate if the id is in the DOM.\n */\nexport function useSlotId(depArray: ReadonlyArray<any> = []): string {\n let id = useId();\n let [resolvedId, setResolvedId] = useValueEffect(id);\n let updateId = useCallback(() => {\n setResolvedId(function* () {\n yield id;\n\n yield document.getElementById(id) ? id : undefined;\n });\n }, [id, setResolvedId]);\n\n useLayoutEffect(updateId, [id, updateId, ...depArray]);\n\n return resolvedId;\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\n/**\n * Calls all functions in the order they were chained with the same arguments.\n */\nexport function chain(...callbacks: any[]): (...args: any[]) => void {\n return (...args: any[]) => {\n for (let callback of callbacks) {\n if (typeof callback === 'function') {\n callback(...args);\n }\n }\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { chain } from './chain';\nimport clsx from 'clsx';\nimport { mergeIds } from './useId';\n\ninterface Props {\n [key: string]: any;\n}\n\ntype PropsArg = Props | null | undefined;\n\n// taken from: https://stackoverflow.com/questions/51603250/typescript-3-parameter-list-intersection-type/51604379#51604379\ntype TupleTypes<T> = { [P in keyof T]: T[P] } extends { [key: number]: infer V } ? NullToObject<V> : never;\ntype NullToObject<T> = T extends null | undefined ? {} : T;\n// eslint-disable-next-line no-undef, @typescript-eslint/no-unused-vars\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;\n\n/**\n * Merges multiple props objects together. Event handlers are chained,\n * classNames are combined, and ids are deduplicated - different ids\n * will trigger a side-effect and re-render components hooked up with `useId`.\n * For all other props, the last prop object overrides all previous ones.\n * @param args - Multiple sets of props to merge together.\n */\nexport function mergeProps<T extends PropsArg[]>(...args: T): UnionToIntersection<TupleTypes<T>> {\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: Props = { ...args[0] };\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\n // Chain events\n if (\n typeof a === 'function' &&\n typeof b === 'function' &&\n // This is a lot faster than a regex.\n key[0] === 'o' &&\n key[1] === 'n' &&\n key.charCodeAt(2) >= /* 'A' */ 65 &&\n key.charCodeAt(2) <= /* 'Z' */ 90\n ) {\n result[key] = chain(a, b);\n\n // Merge classnames, sometimes classNames are empty string which eval to false, so we just need to do a type check\n } else if (\n (key === 'className' || key === 'UNSAFE_className') &&\n typeof a === 'string' &&\n typeof b === 'string'\n ) {\n result[key] = clsx(a, b);\n } else if (key === 'id' && a && b) {\n result.id = mergeIds(a, b);\n // Override others\n } else {\n result[key] = b !== undefined ? b : a;\n }\n }\n }\n\n return result as UnionToIntersection<TupleTypes<T>>;\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { AriaLabelingProps, DOMProps, LinkDOMProps } from '../../react-types/shared';\n\nconst DOMPropNames = new Set(['id']);\n\nconst labelablePropNames = new Set(['aria-label', 'aria-labelledby', 'aria-describedby', 'aria-details']);\n\n// See LinkDOMProps in dom.d.ts.\nconst linkPropNames = new Set(['href', 'hrefLang', 'target', 'rel', 'download', 'ping', 'referrerPolicy']);\n\ninterface Options {\n /**\n * If labelling associated aria properties should be included in the filter.\n */\n labelable?: boolean;\n /** Whether the element is a link and should include DOM props for <a> elements. */\n isLink?: boolean;\n /**\n * A Set of other property names that should be included in the filter.\n */\n propNames?: Set<string>;\n}\n\nconst propRe = /^(data-.*)$/;\n\n/**\n * Filters out all props that aren't valid DOM props or defined via override prop obj.\n * @param props - The component props to be filtered.\n * @param opts - Props to override.\n */\nexport function filterDOMProps(\n props: DOMProps & AriaLabelingProps & LinkDOMProps,\n opts: Options = {}\n): DOMProps & AriaLabelingProps {\n let { labelable, isLink, propNames } = opts;\n let filteredProps = {};\n\n for (const prop in props) {\n if (\n Object.prototype.hasOwnProperty.call(props, prop) &&\n (DOMPropNames.has(prop) ||\n (labelable && labelablePropNames.has(prop)) ||\n (isLink && linkPropNames.has(prop)) ||\n propNames?.has(prop) ||\n propRe.test(prop))\n ) {\n filteredProps[prop] = props[prop];\n }\n }\n\n return filteredProps;\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { FocusableElement } from '../../react-types/shared';\n\n// This is a polyfill for element.focus({preventScroll: true});\n// Currently necessary for Safari and old Edge:\n// https://caniuse.com/#feat=mdn-api_htmlelement_focus_preventscroll_option\n// See https://bugs.webkit.org/show_bug.cgi?id=178583\n//\n\n// Original licensing for the following methods can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/calvellido/focus-options-polyfill\n\ninterface ScrollableElement {\n element: HTMLElement;\n scrollTop: number;\n scrollLeft: number;\n}\n\nexport function focusWithoutScrolling(element: FocusableElement) {\n if (supportsPreventScroll()) {\n element.focus({ preventScroll: true });\n } else {\n let scrollableElements = getScrollableElements(element);\n element.focus();\n restoreScrollPosition(scrollableElements);\n }\n}\n\nlet supportsPreventScrollCached: boolean | null = null;\nfunction supportsPreventScroll() {\n if (supportsPreventScrollCached == null) {\n supportsPreventScrollCached = false;\n try {\n let focusElem = document.createElement('div');\n focusElem.focus({\n get preventScroll() {\n supportsPreventScrollCached = true;\n return true;\n },\n });\n } catch (e) {\n // Ignore\n }\n }\n\n return supportsPreventScrollCached;\n}\n\nfunction getScrollableElements(element: FocusableElement): ScrollableElement[] {\n let parent = element.parentNode;\n let scrollableElements: ScrollableElement[] = [];\n let rootScrollingElement = document.scrollingElement || document.documentElement;\n\n while (parent instanceof HTMLElement && parent !== rootScrollingElement) {\n if (parent.offsetHeight < parent.scrollHeight || parent.offsetWidth < parent.scrollWidth) {\n scrollableElements.push({\n element: parent,\n scrollTop: parent.scrollTop,\n scrollLeft: parent.scrollLeft,\n });\n }\n parent = parent.parentNode;\n }\n\n if (rootScrollingElement instanceof HTMLElement) {\n scrollableElements.push({\n element: rootScrollingElement,\n scrollTop: rootScrollingElement.scrollTop,\n scrollLeft: rootScrollingElement.scrollLeft,\n });\n }\n\n return scrollableElements;\n}\n\nfunction restoreScrollPosition(scrollableElements: ScrollableElement[]) {\n for (let { element, scrollTop, scrollLeft } of scrollableElements) {\n element.scrollTop = scrollTop;\n element.scrollLeft = scrollLeft;\n }\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2023 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 */\n\nimport { focusWithoutScrolling, isMac, isWebKit } from './index';\nimport { Href, LinkDOMProps, RouterOptions } from '../../react-types/shared';\nimport { isFirefox, isIPad } from './platform';\nimport React, { createContext, ReactNode, useContext, useMemo } from 'react';\n\ninterface Router {\n isNative: boolean;\n open: (target: Element, modifiers: Modifiers, href: Href, routerOptions: RouterOptions | undefined) => void;\n useHref: (href: Href) => string;\n}\n\nconst RouterContext = createContext<Router>({\n isNative: true,\n open: openSyntheticLink,\n useHref: (href) => href,\n});\n\ninterface RouterProviderProps {\n navigate: (path: Href, routerOptions: RouterOptions | undefined) => void;\n useHref?: (href: Href) => string;\n children: ReactNode;\n}\n\n/**\n * A RouterProvider accepts a `navigate` function from a framework or client side router,\n * and provides it to all nested React Aria links to enable client side navigation.\n */\nexport function RouterProvider(props: RouterProviderProps) {\n let { children, navigate, useHref } = props;\n\n let ctx = useMemo(\n () => ({\n isNative: false,\n open: (target: Element, modifiers: Modifiers, href: Href, routerOptions: RouterOptions | undefined) => {\n getSyntheticLink(target, (link) => {\n if (shouldClientNavigate(link, modifiers)) {\n navigate(href, routerOptions);\n } else {\n openLink(link, modifiers);\n }\n });\n },\n useHref: useHref || ((href) => href),\n }),\n [navigate, useHref]\n );\n\n return <RouterContext.Provider value={ctx}>{children}</RouterContext.Provider>;\n}\n\nexport function useRouter(): Router {\n return useContext(RouterContext);\n}\n\ninterface Modifiers {\n metaKey?: boolean;\n ctrlKey?: boolean;\n altKey?: boolean;\n shiftKey?: boolean;\n}\n\nexport function shouldClientNavigate(link: HTMLAnchorElement, modifiers: Modifiers) {\n // Use getAttribute here instead of link.target. Firefox will default link.target to \"_parent\" when inside an iframe.\n let target = link.getAttribute('target');\n return (\n (!target || target === '_self') &&\n link.origin === location.origin &&\n !link.hasAttribute('download') &&\n !modifiers.metaKey && // open in new tab (mac)\n !modifiers.ctrlKey && // open in new tab (windows)\n !modifiers.altKey && // download\n !modifiers.shiftKey\n );\n}\n\nexport function openLink(target: HTMLAnchorElement, modifiers: Modifiers, setOpening = true) {\n let { metaKey, ctrlKey, altKey, shiftKey } = modifiers;\n\n // Firefox does not recognize keyboard events as a user action by default, and the popup blocker\n // will prevent links with target=\"_blank\" from opening. However, it does allow the event if the\n // Command/Control key is held, which opens the link in a background tab. This seems like the best we can do.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=257870 and https://bugzilla.mozilla.org/show_bug.cgi?id=746640.\n if (isFirefox() && window.event?.type?.startsWith('key') && target.target === '_blank') {\n if (isMac()) {\n metaKey = true;\n } else {\n ctrlKey = true;\n }\n }\n\n // WebKit does not support firing click events with modifier keys, but does support keyboard events.\n // https://github.com/WebKit/WebKit/blob/c03d0ac6e6db178f90923a0a63080b5ca210d25f/Source/WebCore/html/HTMLAnchorElement.cpp#L184\n let event =\n isWebKit() && isMac() && !isIPad() && process.env.NODE_ENV !== 'test'\n ? // @ts-ignore - keyIdentifier is a non-standard property, but it's what webkit expects\n new KeyboardEvent('keydown', { keyIdentifier: 'Enter', metaKey, ctrlKey, altKey, shiftKey })\n : new MouseEvent('click', { metaKey, ctrlKey, altKey, shiftKey, bubbles: true, cancelable: true });\n (openLink as any).isOpening = setOpening;\n focusWithoutScrolling(target);\n target.dispatchEvent(event);\n (openLink as any).isOpening = false;\n}\n// https://github.com/parcel-bundler/parcel/issues/8724\n(openLink as any).isOpening = false;\n\nfunction getSyntheticLink(target: Element, open: (link: HTMLAnchorElement) => void) {\n if (target instanceof HTMLAnchorElement) {\n open(target);\n } else if (target.hasAttribute('data-href')) {\n let link = document.createElement('a');\n link.href = target.getAttribute('data-href')!;\n if (target.hasAttribute('data-target')) {\n link.target = target.getAttribute('data-target')!;\n }\n if (target.hasAttribute('data-rel')) {\n link.rel = target.getAttribute('data-rel')!;\n }\n if (target.hasAttribute('data-download')) {\n link.download = target.getAttribute('data-download')!;\n }\n if (target.hasAttribute('data-ping')) {\n link.ping = target.getAttribute('data-ping')!;\n }\n if (target.hasAttribute('data-referrer-policy')) {\n link.referrerPolicy = target.getAttribute('data-referrer-policy')!;\n }\n target.appendChild(link);\n open(link);\n target.removeChild(link);\n }\n}\n\nfunction openSyntheticLink(target: Element, modifiers: Modifiers) {\n getSyntheticLink(target, (link) => openLink(link, modifiers));\n}\n\nexport function useSyntheticLinkProps(props: LinkDOMProps) {\n let router = useRouter();\n return {\n 'data-href': props.href ? router.useHref(props.href) : undefined,\n 'data-target': props.target,\n 'data-rel': props.rel,\n 'data-download': props.download,\n 'data-ping': props.ping,\n 'data-referrer-policy': props.referrerPolicy,\n };\n}\n\nexport function useLinkProps(props: LinkDOMProps) {\n let router = useRouter();\n return {\n href: props?.href ? router.useHref(props?.href) : undefined,\n target: props?.target,\n rel: props?.rel,\n download: props?.download,\n ping: props?.ping,\n referrerPolicy: props?.referrerPolicy,\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\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 transitionsByElement = new Map<EventTarget, Set<string>>();\n\n// A list of callbacks to call once there are no transitioning elements.\nlet transitionCallbacks = new Set<() => void>();\n\nfunction setupGlobalEvents() {\n if (typeof window === 'undefined') {\n return;\n }\n\n function isTransitionEvent(event: Event): event is TransitionEvent {\n return 'propertyName' in event;\n }\n\n let onTransitionStart = (e: Event) => {\n if (!isTransitionEvent(e) || !e.target) {\n return;\n }\n // Add the transitioning property to the list for this element.\n let transitions = transitionsByElement.get(e.target);\n if (!transitions) {\n transitions = new Set();\n transitionsByElement.set(e.target, transitions);\n\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 once: true,\n });\n }\n\n transitions.add(e.propertyName);\n };\n\n let onTransitionEnd = (e: Event) => {\n if (!isTransitionEvent(e) || !e.target) {\n return;\n }\n // Remove property from list of transitioning properties.\n let properties = transitionsByElement.get(e.target);\n if (!properties) {\n return;\n }\n\n properties.delete(e.propertyName);\n\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 transitionsByElement.delete(e.target);\n }\n\n // If no transitioning elements, call all of the queued callbacks.\n if (transitionsByElement.size === 0) {\n for (let cb of transitionCallbacks) {\n cb();\n }\n\n transitionCallbacks.clear();\n }\n };\n\n document.body.addEventListener('transitionrun', onTransitionStart);\n document.body.addEventListener('transitionend', onTransitionEnd);\n}\n\nif (typeof document !== 'undefined') {\n if (document.readyState !== 'loading') {\n setupGlobalEvents();\n } else {\n document.addEventListener('DOMContentLoaded', setupGlobalEvents);\n }\n}\n\nexport function runAfterTransition(fn: () => void) {\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 (transitionsByElement.size === 0) {\n fn();\n } else {\n transitionCallbacks.add(fn);\n }\n });\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { useCallback, useEffect, useRef } from 'react';\n\ninterface GlobalListeners {\n addGlobalListener<K extends keyof DocumentEventMap>(\n el: EventTarget,\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n addGlobalListener(\n el: EventTarget,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void;\n removeGlobalListener<K extends keyof DocumentEventMap>(\n el: EventTarget,\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n removeGlobalListener(\n el: EventTarget,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void;\n removeAllGlobalListeners(): void;\n}\n\nexport function useGlobalListeners(): GlobalListeners {\n let globalListeners = useRef(new Map());\n let addGlobalListener = useCallback((eventTarget, type, listener, options) => {\n // Make sure we remove the listener after it is called with the `once` option.\n let fn = options?.once\n ? (...args) => {\n globalListeners.current.delete(listener);\n listener(...args);\n }\n : listener;\n globalListeners.current.set(listener, { type, eventTarget, fn, options });\n eventTarget.addEventListener(type, listener, options);\n }, []);\n let removeGlobalListener = useCallback((eventTarget, type, listener, options) => {\n let fn = globalListeners.current.get(listener)?.fn || listener;\n eventTarget.removeEventListener(type, fn, options);\n globalListeners.current.delete(listener);\n }, []);\n let removeAllGlobalListeners = useCallback(() => {\n globalListeners.current.forEach((value, key) => {\n removeGlobalListener(value.eventTarget, value.type, key, value.options);\n });\n }, [removeGlobalListener]);\n\n // eslint-disable-next-line arrow-body-style\n useEffect(() => {\n return removeAllGlobalListeners;\n }, [removeAllGlobalListeners]);\n\n return { addGlobalListener, removeGlobalListener, removeAllGlobalListeners };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { AriaLabelingProps, DOMProps } from '../../react-types/shared';\nimport { useId } from './useId';\n\n/**\n * Merges aria-label and aria-labelledby into aria-labelledby when both exist.\n * @param props - Aria label props.\n * @param defaultLabel - Default value for aria-label when not present.\n */\nexport function useLabels(props: DOMProps & AriaLabelingProps, defaultLabel?: string): DOMProps & AriaLabelingProps {\n let { id, 'aria-label': label, 'aria-labelledby': labelledBy } = props;\n\n // If there is both an aria-label and aria-labelledby,\n // combine them by pointing to the element itself.\n id = useId(id);\n if (labelledBy && label) {\n let ids = new Set([id, ...labelledBy.trim().split(/\\s+/)]);\n labelledBy = [...ids].join(' ');\n } else if (labelledBy) {\n labelledBy = labelledBy.trim().split(/\\s+/).join(' ');\n }\n\n // If no labels are provided, use the default\n if (!label && !labelledBy && defaultLabel) {\n label = defaultLabel;\n }\n\n return {\n id,\n 'aria-label': label,\n 'aria-labelledby': labelledBy,\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 */\n\nimport {MutableRefObject, RefObject} from 'react';\nimport {useLayoutEffect} from './';\n\ninterface ContextValue<T> {\n ref?: MutableRefObject<T | null>\n}\n\n// Syncs ref from context with ref passed to hook\nexport function useSyncRef<T>(context?: ContextValue<T> | null, ref?: RefObject<T>) {\n useLayoutEffect(() => {\n if (context && context.ref && ref) {\n context.ref.current = ref.current;\n return () => {\n if (context.ref) {\n context.ref.current = null;\n }\n };\n }\n });\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2021 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 */\n\nimport { RefObject, useEffect } from 'react';\nimport { useEffectEvent } from './useEffectEvent';\n\nexport function useEvent<K extends keyof GlobalEventHandlersEventMap>(\n ref: RefObject<EventTarget>,\n event: K | (string & {}),\n handler?: (this: Document, ev: GlobalEventHandlersEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n) {\n let handleEvent = useEffectEvent(handler);\n let isDisabled = handler == null;\n\n useEffect(() => {\n if (isDisabled || !ref.current) {\n return;\n }\n\n let element = ref.current;\n element.addEventListener(event, handleEvent as EventListener, options);\n return () => {\n element.removeEventListener(event, handleEvent as EventListener, options);\n };\n }, [ref, event, options, isDisabled, handleEvent]);\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { Dispatch, MutableRefObject, useRef, useState } from 'react';\nimport { useEffectEvent, useLayoutEffect } from './';\n\ntype SetValueAction<S> = (prev: S) => Generator<any, void, unknown>;\n\n// This hook works like `useState`, but when setting the value, you pass a generator function\n// that can yield multiple values. Each yielded value updates the state and waits for the next\n// layout effect, then continues the generator. This allows sequential updates to state to be\n// written linearly.\nexport function useValueEffect<S>(defaultValue: S | (() => S)): [S, Dispatch<SetValueAction<S>>] {\n let [value, setValue] = useState(defaultValue);\n let effect: MutableRefObject<Generator<S> | null> = useRef<Generator<S> | null>(null);\n\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 = useEffectEvent(() => {\n if (!effect.current) {\n return;\n }\n // Run the generator to the next yield.\n let newValue = effect.current.next();\n\n // If the generator is done, reset the effect.\n if (newValue.done) {\n effect.current = null;\n return;\n }\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) {\n nextRef();\n } else {\n setValue(newValue.value);\n }\n });\n\n useLayoutEffect(() => {\n // If there is an effect currently running, continue to the next yield.\n if (effect.current) {\n nextRef();\n }\n });\n\n let queue = useEffectEvent((fn) => {\n effect.current = fn(value);\n nextRef();\n });\n\n return [value, queue];\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nexport function useControlledState<T, C = T>(\n value: Exclude<T, undefined>,\n defaultValue: Exclude<T, undefined> | undefined,\n onChange?: (v: C, ...args: any[]) => void\n): [T, (value: T) => void];\nexport function useControlledState<T, C = T>(\n value: Exclude<T, undefined> | undefined,\n defaultValue: Exclude<T, undefined>,\n onChange?: (v: C, ...args: any[]) => void\n): [T, (value: T) => void];\nexport function useControlledState<T, C = T>(\n value: T,\n defaultValue: T,\n onChange?: (v: C, ...args: any[]) => void\n): [T, (value: T) => void] {\n let [stateValue, setStateValue] = useState(value || defaultValue);\n\n let isControlledRef = useRef(value !== undefined);\n let isControlled = value !== undefined;\n useEffect(() => {\n let wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n console.warn(\n `WARN: A component changed from ${wasControlled ? 'controlled' : 'uncontrolled'} to ${\n isControlled ? 'controlled' : 'uncontrolled'\n }.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled]);\n\n let currentValue = isControlled ? value : stateValue;\n let setValue = useCallback(\n (value, ...args) => {\n let onChangeCaller = (value, ...onChangeArgs) => {\n if (onChange) {\n if (!Object.is(currentValue, value)) {\n onChange(value, ...onChangeArgs);\n }\n }\n if (!isControlled) {\n // If uncontrolled, mutate the currentValue local variable so that\n // calling setState multiple times with the same value only emits onChange once.\n // We do not use a ref for this because we specifically _do_ want the value to\n // reset every render, and assigning to a ref in render breaks aborted suspended renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n currentValue = value;\n }\n };\n\n if (typeof value === 'function') {\n console.warn(\n 'We can not support a function callback. See Github Issues for details https://github.com/adobe/react-spectrum/issues/2320'\n );\n // this supports functional updates https://reactjs.org/docs/hooks-reference.html#functional-updates\n // when someone using useControlledState calls setControlledState(myFunc)\n // this will call our useState setState with a function as well which invokes myFunc and calls onChange with the value from myFunc\n // if we're in an uncontrolled state, then we also return the value of myFunc which to setState looks as though it was just called with myFunc from the beginning\n // otherwise we just return the controlled value, which won't cause a rerender because React knows to bail out when the value is the same\n let updateFunction = (oldValue, ...functionArgs) => {\n let interceptedValue = value(isControlled ? currentValue : oldValue, ...functionArgs);\n onChangeCaller(interceptedValue, ...args);\n if (!isControlled) {\n return interceptedValue;\n }\n return oldValue;\n };\n setStateValue(updateFunction);\n } else {\n if (!isControlled) {\n setStateValue(value);\n }\n onChangeCaller(value, ...args);\n }\n },\n [isControlled, currentValue, onChange]\n );\n\n return [currentValue, setValue];\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\n/**\n * Takes a value and forces it to the closest min/max if it's outside. Also forces it to the closest valid step.\n */\nexport function clamp(value: number, min: number = -Infinity, max: number = Infinity): number {\n let newValue = Math.min(Math.max(value, min), max);\n return newValue;\n}\n\nexport function roundToStepPrecision(value: number, step: number) {\n let roundedValue = value;\n let stepString = step.toString();\n let pointIndex = stepString.indexOf('.');\n let precision = pointIndex >= 0 ? stepString.length - pointIndex : 0;\n if (precision > 0) {\n let pow = Math.pow(10, precision);\n roundedValue = Math.round(roundedValue * pow) / pow;\n }\n return roundedValue;\n}\n\nexport function snapValueToStep(value: number, min: number | undefined, max: number | undefined, step: number): number {\n min = Number(min);\n max = Number(max);\n let remainder = (value - (isNaN(min) ? 0 : min)) % step;\n let snappedValue = roundToStepPrecision(\n Math.abs(remainder) * 2 >= step ? value + Math.sign(remainder) * (step - Math.abs(remainder)) : value - remainder,\n step\n );\n\n if (!isNaN(min)) {\n if (snappedValue < min) {\n snappedValue = min;\n } else if (!isNaN(max) && snappedValue > max) {\n snappedValue = min + Math.floor(roundToStepPrecision((max - min) / step, step)) * step;\n }\n } else if (!isNaN(max) && snappedValue > max) {\n snappedValue = Math.floor(roundToStepPrecision(max / step, step)) * step;\n }\n\n // correct floating point behavior by rounding to step precision\n snappedValue = roundToStepPrecision(snappedValue, step);\n\n return snappedValue;\n}\n\n/* Takes a value and rounds off to the number of digits. */\nexport function toFixedNumber(value: number, digits: number, base: number = 10): number {\n const pow = Math.pow(base, digits);\n\n return Math.round(value * pow) / pow;\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2023 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 */\nimport { RefObject, useEffect, useRef } from 'react';\nimport { useEffectEvent } from './useEffectEvent';\n\nexport function useFormReset<T>(\n ref: RefObject<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>,\n initialValue: T,\n onReset: (value: T) => void\n) {\n let resetValue = useRef(initialValue);\n let handleReset = useEffectEvent(() => {\n if (onReset) {\n onReset(resetValue.current);\n }\n });\n\n useEffect(() => {\n let form = ref?.current?.form;\n form?.addEventListener('reset', handleReset);\n return () => {\n form?.removeEventListener('reset', handleReset);\n };\n }, [ref, handleReset]);\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { NumberFormatter } from './NumberFormatter';\n\ninterface Symbols {\n minusSign?: string;\n plusSign?: string;\n decimal?: string;\n group?: string;\n literals: RegExp;\n numeral: RegExp;\n index: (v: string) => string;\n}\n\nconst CURRENCY_SIGN_REGEX = new RegExp('^.*\\\\(.*\\\\).*$');\nconst NUMBERING_SYSTEMS = ['latn', 'arab', 'hanidec'];\n\n/**\n * A NumberParser can be used to perform locale-aware parsing of numbers from Unicode strings,\n * as well as validation of partial user input. It automatically detects the numbering system\n * used in the input, and supports parsing decimals, percentages, currency values, and units\n * according to the locale.\n */\nexport class NumberParser {\n private locale: string;\n private options: Intl.NumberFormatOptions;\n\n constructor(locale: string, options: Intl.NumberFormatOptions = {}) {\n this.locale = locale;\n this.options = options;\n }\n\n /**\n * Parses the given string to a number. Returns NaN if a valid number could not be parsed.\n */\n parse(value: string): number {\n return getNumberParserImpl(this.locale, this.options, value).parse(value);\n }\n\n /**\n * Returns whether the given string could potentially be a valid number. This should be used to\n * validate user input as the user types. If a `minValue` or `maxValue` is provided, the validity\n * of the minus/plus sign characters can be checked.\n */\n isValidPartialNumber(value: string, minValue?: number, maxValue?: number): boolean {\n return getNumberParserImpl(this.locale, this.options, value).isValidPartialNumber(value, minValue, maxValue);\n }\n\n /**\n * Returns a numbering system for which the given string is valid in the current locale.\n * If no numbering system could be detected, the default numbering system for the current\n * locale is returned.\n */\n getNumberingSystem(value: string): string {\n return getNumberParserImpl(this.locale, this.options, value).options.numberingSystem;\n }\n}\n\nconst numberParserCache = new Map<string, NumberParserImpl>();\nfunction getNumberParserImpl(locale: string, options: Intl.NumberFormatOptions, value: string) {\n // First try the default numbering system for the provided locale\n let defaultParser = getCachedNumberParser(locale, options);\n\n // If that doesn't match, and the locale doesn't include a hard coded numbering system,\n // try each of the other supported numbering systems until we find one that matches.\n if (!locale.includes('-nu-') && !defaultParser.isValidPartialNumber(value)) {\n for (let numberingSystem of NUMBERING_SYSTEMS) {\n if (numberingSystem !== defaultParser.options.numberingSystem) {\n let parser = getCachedNumberParser(\n locale + (locale.includes('-u-') ? '-nu-' : '-u-nu-') + numberingSystem,\n options\n );\n if (parser.isValidPartialNumber(value)) {\n return parser;\n }\n }\n }\n }\n\n return defaultParser;\n}\n\nfunction getCachedNumberParser(locale: string, options: Intl.NumberFormatOptions) {\n let cacheKey =\n locale +\n (options\n ? Object.entries(options)\n .sort((a, b) => (a[0] < b[0] ? -1 : 1))\n .join()\n : '');\n let parser = numberParserCache.get(cacheKey);\n if (!parser) {\n parser = new NumberParserImpl(locale, options);\n numberParserCache.set(cacheKey, parser);\n }\n\n return parser;\n}\n\n// The actual number parser implementation. Instances of this class are cached\n// based on the locale, options, and detected numbering system.\nclass NumberParserImpl {\n formatter: Intl.NumberFormat;\n options: Intl.ResolvedNumberFormatOptions;\n symbols: Symbols;\n locale: string;\n\n constructor(locale: string, options: Intl.NumberFormatOptions = {}) {\n this.locale = locale;\n this.formatter = new Intl.NumberFormat(locale, options);\n this.options = this.formatter.resolvedOptions();\n this.symbols = getSymbols(locale, this.formatter, this.options, options);\n if (\n this.options.style === 'percent' &&\n ((this.options.minimumFractionDigits ?? 0) > 18 || (this.options.maximumFractionDigits ?? 0) > 18)\n ) {\n console.warn(\n 'NumberParser cannot handle percentages with greater than 18 decimal places, please reduce the number in your options.'\n );\n }\n }\n\n parse(value: string) {\n // to parse the number, we need to remove anything that isn't actually part of the number, for example we want '-10.40' not '-10.40 USD'\n let fullySanitizedValue = this.sanitize(value);\n\n if (this.symbols.group) {\n // Remove group characters, and replace decimal points and numerals with ASCII values.\n fullySanitizedValue = replaceAll(fullySanitizedValue, this.symbols.group, '');\n }\n if (this.symbols.decimal) {\n fullySanitizedValue = fullySanitizedValue.replace(this.symbols.decimal!, '.');\n }\n if (this.symbols.minusSign) {\n fullySanitizedValue = fullySanitizedValue.replace(this.symbols.minusSign!, '-');\n }\n fullySanitizedValue = fullySanitizedValue.replace(this.symbols.numeral, this.symbols.index);\n\n if (this.options.style === 'percent') {\n // javascript is bad at dividing by 100 and maintaining the same significant figures, so perform it on the string before parsing\n let isNegative = fullySanitizedValue.indexOf('-');\n fullySanitizedValue = fullySanitizedValue.replace('-', '');\n let index = fullySanitizedValue.indexOf('.');\n if (index === -1) {\n index = fullySanitizedValue.length;\n }\n fullySanitizedValue = fullySanitizedValue.replace('.', '');\n if (index - 2 === 0) {\n fullySanitizedValue = `0.${fullySanitizedValue}`;\n } else if (index - 2 === -1) {\n fullySanitizedValue = `0.0${fullySanitizedValue}`;\n } else if (index - 2 === -2) {\n fullySanitizedValue = '0.00';\n } else {\n fullySanitizedValue = `${fullySanitizedValue.slice(0, index - 2)}.${fullySanitizedValue.slice(index - 2)}`;\n }\n if (isNegative > -1) {\n fullySanitizedValue = `-${fullySanitizedValue}`;\n }\n }\n\n let newValue = fullySanitizedValue ? +fullySanitizedValue : NaN;\n if (isNaN(newValue)) {\n return NaN;\n }\n\n if (this.options.style === 'percent') {\n // extra step for rounding percents to what our formatter would output\n let options = {\n ...this.options,\n style: 'decimal' as const,\n minimumFractionDigits: Math.min((this.options.minimumFractionDigits ?? 0) + 2, 20),\n maximumFractionDigits: Math.min((this.options.maximumFractionDigits ?? 0) + 2, 20),\n };\n return new NumberParser(this.locale, options).parse(new NumberFormatter(this.locale, options).format(newValue));\n }\n\n // accounting will always be stripped to a positive number, so if it's accounting and has a () around everything, then we need to make it negative again\n if (this.options.currencySign === 'accounting' && CURRENCY_SIGN_REGEX.test(value)) {\n newValue = -1 * newValue;\n }\n\n return newValue;\n }\n\n sanitize(value: string) {\n // Remove literals and whitespace, which are allowed anywhere in the string\n value = value.replace(this.symbols.literals, '');\n\n // Replace the ASCII minus sign with the minus sign used in the current locale\n // so that both are allowed in case the user's keyboard doesn't have the locale's minus sign.\n if (this.symbols.minusSign) {\n value = value.replace('-', this.symbols.minusSign);\n }\n\n // In arab numeral system, their decimal character is 1643, but most keyboards don't type that\n // instead they use the , (44) character or apparently the (1548) character.\n if (this.options.numberingSystem === 'arab') {\n if (this.symbols.decimal) {\n value = value.replace(',', this.symbols.decimal);\n value = value.replace(String.fromCharCode(1548), this.symbols.decimal);\n }\n if (this.symbols.group) {\n value = replaceAll(value, '.', this.symbols.group);\n }\n }\n\n // fr-FR group character is char code 8239, but that's not a key on the french keyboard,\n // so allow 'period' as a group char and replace it with a space\n if (this.options.locale === 'fr-FR') {\n value = replaceAll(value, '.', String.fromCharCode(8239));\n }\n\n return value;\n }\n\n isValidPartialNumber(value: string, minValue: number = -Infinity, maxValue: number = Infinity): boolean {\n value = this.sanitize(value);\n\n // Remove minus or plus sign, which must be at the start of the string.\n if (this.symbols.minusSign && value.startsWith(this.symbols.minusSign) && minValue < 0) {\n value = value.slice(this.symbols.minusSign.length);\n } else if (this.symbols.plusSign && value.startsWith(this.symbols.plusSign) && maxValue > 0) {\n value = value.slice(this.symbols.plusSign.length);\n }\n\n // Numbers cannot start with a group separator\n if (this.symbols.group && value.startsWith(this.symbols.group)) {\n return false;\n }\n\n // Numbers that can't have any decimal values fail if a decimal character is typed\n if (this.symbols.decimal && value.indexOf(this.symbols.decimal) > -1 && this.options.maximumFractionDigits === 0) {\n return false;\n }\n\n // Remove numerals, groups, and decimals\n if (this.symbols.group) {\n value = replaceAll(value, this.symbols.group, '');\n }\n value = value.replace(this.symbols.numeral, '');\n if (this.symbols.decimal) {\n value = value.replace(this.symbols.decimal, '');\n }\n\n // The number is valid if there are no remaining characters\n return value.length === 0;\n }\n}\n\nconst nonLiteralParts = new Set(['decimal', 'fraction', 'integer', 'minusSign', 'plusSign', 'group']);\n\n// This list is derived from https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html#comparison and includes\n// all unique numbers which we need to check in order to determine all the plural forms for a given locale.\n// See: https://github.com/adobe/react-spectrum/pull/5134/files#r1337037855 for used script\nconst pluralNumbers = [0, 4, 2, 1, 11, 20, 3, 7, 100, 21, 0.1, 1.1];\n\nfunction getSymbols(\n locale: string,\n formatter: Intl.NumberFormat,\n intlOptions: Intl.ResolvedNumberFormatOptions,\n originalOptions: Intl.NumberFormatOptions\n): Symbols {\n // formatter needs access to all decimal places in order to generate the correct literal strings for the plural set\n let symbolFormatter = new Intl.NumberFormat(locale, {\n ...intlOptions,\n minimumSignificantDigits: 1,\n maximumSignificantDigits: 21,\n });\n // Note: some locale's don't add a group symbol until there is a ten thousands place\n let allParts = symbolFormatter.formatToParts(-10000.111);\n let posAllParts = symbolFormatter.formatToParts(10000.111);\n let pluralParts = pluralNumbers.map((n) => symbolFormatter.formatToParts(n));\n\n let minusSign = allParts.find((p) => p.type === 'minusSign')?.value ?? '-';\n let plusSign = posAllParts.find((p) => p.type === 'plusSign')?.value;\n\n // Safari does not support the signDisplay option, but our number parser polyfills it.\n // If no plus sign was returned, but the original options contained signDisplay, default to the '+' character.\n // @ts-ignore\n if (!plusSign && (originalOptions?.signDisplay === 'exceptZero' || originalOptions?.signDisplay === 'always')) {\n plusSign = '+';\n }\n\n // If maximumSignificantDigits is 1 (the minimum) then we won't get decimal characters out of the above formatters\n // Percent also defaults to 0 fractionDigits, so we need to make a new one that isn't percent to get an accurate decimal\n let decimalParts = new Intl.NumberFormat(locale, {\n ...intlOptions,\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).formatToParts(0.001);\n\n let decimal = decimalParts.find((p) => p.type === 'decimal')?.value;\n let group = allParts.find((p) => p.type === 'group')?.value;\n\n // this set is also for a regex, it's all literals that might be in the string we want to eventually parse that\n // don't contribute to the numerical value\n let allPartsLiterals = allParts.filter((p) => !nonLiteralParts.has(p.type)).map((p) => escapeRegex(p.value));\n let pluralPartsLiterals = pluralParts.flatMap((p) =>\n p.filter((p) => !nonLiteralParts.has(p.type)).map((p) => escapeRegex(p.value))\n );\n let sortedLiterals = [...new Set([...allPartsLiterals, ...pluralPartsLiterals])].sort((a, b) => b.length - a.length);\n\n let literals =\n sortedLiterals.length === 0\n ? new RegExp('[\\\\p{White_Space}]', 'gu')\n : new RegExp(`${sortedLiterals.join('|')}|[\\\\p{White_Space}]`, 'gu');\n\n // These are for replacing non-latn characters with the latn equivalent\n let numerals = [...new Intl.NumberFormat(intlOptions.locale, { useGrouping: false }).format(9876543210)].reverse();\n let indexes = new Map(numerals.map((d, i) => [d, i]));\n let numeral = new RegExp(`[${numerals.join('')}]`, 'g');\n let index = (d) => String(indexes.get(d));\n\n return { minusSign, plusSign, decimal, group, literals, numeral, index };\n}\n\nfunction replaceAll(str: string, find: string, replace: string) {\n // @ts-ignore\n if (str.replaceAll) {\n // @ts-ignore\n return str.replaceAll(find, replace);\n }\n\n return str.split(find).join(replace);\n}\n\nfunction escapeRegex(string: string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { getOwnerDocument, isIOS, runAfterTransition } from '../utils';\n\n// Safari on iOS starts selecting text on long press. The only way to avoid this, it seems,\n// is to add user-select: none to the entire page. Adding it to the pressable element prevents\n// that element from being selected, but nearby elements may still receive selection. We add\n// user-select: none on touch start, and remove it again on touch end to prevent this.\n// This must be implemented using global state to avoid race conditions between multiple elements.\n\n// There are three possible states due to the delay before removing user-select: none after\n// pointer up. The 'default' state always transitions to the 'disabled' state, which transitions\n// to 'restoring'. The 'restoring' state can either transition back to 'disabled' or 'default'.\n\n// For non-iOS devices, we apply user-select: none to the pressed element instead to avoid possible\n// performance issues that arise from applying and removing user-select: none to the entire page\n// (see https://github.com/adobe/react-spectrum/issues/1609).\ntype State = 'default' | 'disabled' | 'restoring';\n\n// Note that state only matters here for iOS. Non-iOS gets user-select: none applied to the target element\n// rather than at the document level so we just need to apply/remove user-select: none for each pressed element individually\nlet state: State = 'default';\nlet savedUserSelect = '';\nlet modifiedElementMap = new WeakMap<Element, string>();\n\nexport function disableTextSelection(target?: Element) {\n if (isIOS()) {\n if (state === 'default') {\n // eslint-disable-next-line no-restricted-globals\n const documentObject = getOwnerDocument(target);\n savedUserSelect = documentObject.documentElement.style.webkitUserSelect;\n documentObject.documentElement.style.webkitUserSelect = 'none';\n }\n\n state = 'disabled';\n } else if (target instanceof HTMLElement || target instanceof SVGElement) {\n // If not iOS, store the target's original user-select and change to user-select: none\n // Ignore state since it doesn't apply for non iOS\n modifiedElementMap.set(target, target.style.userSelect);\n target.style.userSelect = 'none';\n }\n}\n\nexport function restoreTextSelection(target?: Element) {\n if (isIOS()) {\n // If the state is already default, there's nothing to do.\n // If it is restoring, then there's no need to queue a second restore.\n if (state !== 'disabled') {\n return;\n }\n\n state = 'restoring';\n\n // There appears to be a delay on iOS where selection still might occur\n // after pointer up, so wait a bit before removing user-select.\n setTimeout(() => {\n // Wait for any CSS transitions to complete so we don't recompute style\n // for the whole page in the middle of the animation and cause jank.\n runAfterTransition(() => {\n // Avoid race conditions\n if (state === 'restoring') {\n // eslint-disable-next-line no-restricted-globals\n const documentObject = getOwnerDocument(target);\n if (documentObject.documentElement.style.webkitUserSelect === 'none') {\n documentObject.documentElement.style.webkitUserSelect = savedUserSelect || '';\n }\n\n savedUserSelect = '';\n state = 'default';\n }\n });\n }, 300);\n } else if (target instanceof HTMLElement || target instanceof SVGElement) {\n // If not iOS, restore the target's original user-select if any\n // Ignore state since it doesn't apply for non iOS\n if (target && modifiedElementMap.has(target)) {\n let targetOldUserSelect = modifiedElementMap.get(target) as string;\n\n if (target.style.userSelect === 'none') {\n target.style.userSelect = targetOldUserSelect;\n }\n\n if (target.getAttribute('style') === '') {\n target.removeAttribute('style');\n }\n modifiedElementMap.delete(target);\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 */\n\nimport { FocusableElement } from '../../react-types/shared';\nimport { PressProps } from './usePress';\nimport React, { MutableRefObject } from 'react';\n\ninterface IPressResponderContext extends PressProps {\n register(): void;\n ref?: MutableRefObject<FocusableElement>;\n}\n\nexport const PressResponderContext = React.createContext<IPressResponderContext>({ register: () => {} });\nPressResponderContext.displayName = 'PressResponderContext';\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {\n chain,\n focusWithoutScrolling,\n getOwnerDocument,\n getOwnerWindow,\n isMac,\n isVirtualClick,\n isVirtualPointerEvent,\n mergeProps,\n openLink,\n useEffectEvent,\n useGlobalListeners,\n useSyncRef,\n} from '../utils';\nimport { disableTextSelection, restoreTextSelection } from './textSelection';\nimport {\n DOMAttributes,\n FocusableElement,\n PressEvent as IPressEvent,\n PointerType,\n PressEvents,\n} from '../../react-types/shared';\nimport { PressResponderContext } from './context';\nimport { RefObject, TouchEvent as RTouchEvent, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nexport interface PressProps extends PressEvents {\n /** Whether the target is in a controlled press state (e.g. an overlay it triggers is open). */\n isPressed?: boolean;\n /** Whether the press events should be disabled. */\n isDisabled?: boolean;\n /** Whether the target should not receive focus on press. */\n preventFocusOnPress?: boolean;\n /**\n * Whether press events should be canceled when the pointer leaves the target while pressed.\n * By default, this is `false`, which means if the pointer returns back over the target while\n * still pressed, onPressStart will be fired again. If set to `true`, the press is canceled\n * when the pointer leaves the target and onPressStart will not be fired if the pointer returns.\n */\n shouldCancelOnPointerExit?: boolean;\n /** Whether text selection should be enabled on the pressable element. */\n allowTextSelectionOnPress?: boolean;\n}\n\nexport interface PressHookProps extends PressProps {\n /** A ref to the target element. */\n ref?: RefObject<Element>;\n}\n\ninterface PressState {\n isPressed: boolean;\n ignoreEmulatedMouseEvents: boolean;\n ignoreClickAfterPress: boolean;\n didFirePressStart: boolean;\n isTriggeringEvent: boolean;\n activePointerId: any;\n target: FocusableElement | null;\n isOverTarget: boolean;\n pointerType: PointerType | null;\n userSelect?: string;\n metaKeyEvents?: Map<string, KeyboardEvent>;\n}\n\ninterface EventBase {\n currentTarget: EventTarget | null;\n shiftKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n altKey: boolean;\n clientX?: number;\n clientY?: number;\n targetTouches?: Array<{ clientX?: number; clientY?: number }>;\n}\n\nexport interface PressResult {\n /** Whether the target is currently pressed. */\n isPressed: boolean;\n /** Props to spread on the target element. */\n pressProps: DOMAttributes;\n}\n\nfunction usePressResponderContext(props: PressHookProps): PressHookProps {\n // Consume context from <PressResponder> and merge with props.\n let context = useContext(PressResponderContext);\n if (context) {\n let { register, ...contextProps } = context;\n props = mergeProps(contextProps, props) as PressHookProps;\n register();\n }\n useSyncRef(context, props.ref);\n\n return props;\n}\n\nclass PressEvent implements IPressEvent {\n type: IPressEvent['type'];\n pointerType: PointerType;\n target: Element;\n shiftKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n altKey: boolean;\n x: number;\n y: number;\n #shouldStopPropagation = true;\n\n constructor(type: IPressEvent['type'], pointerType: PointerType, originalEvent: EventBase, state?: PressState) {\n let currentTarget = state?.target ?? originalEvent.currentTarget;\n const rect: DOMRect | undefined = (currentTarget as Element)?.getBoundingClientRect();\n let x,\n y = 0;\n let clientX,\n clientY: number | null = null;\n if (originalEvent.clientX != null && originalEvent.clientY != null) {\n clientX = originalEvent.clientX;\n clientY = originalEvent.clientY;\n }\n if (rect) {\n if (clientX != null && clientY != null) {\n x = clientX - rect.left;\n y = clientY - rect.top;\n } else {\n x = rect.width / 2;\n y = rect.height / 2;\n }\n }\n this.type = type;\n this.pointerType = pointerType;\n this.target = originalEvent.currentTarget as Element;\n this.shiftKey = originalEvent.shiftKey;\n this.metaKey = originalEvent.metaKey;\n this.ctrlKey = originalEvent.ctrlKey;\n this.altKey = originalEvent.altKey;\n this.x = x;\n this.y = y;\n }\n\n continuePropagation() {\n this.#shouldStopPropagation = false;\n }\n\n get shouldStopPropagation() {\n return this.#shouldStopPropagation;\n }\n}\n\nconst LINK_CLICKED = Symbol('linkClicked');\n\n/**\n * Handles press interactions across mouse, touch, keyboard, and screen readers.\n * It normalizes behavior across browsers and platforms, and handles many nuances\n * of dealing with pointer and keyboard events.\n */\nexport function usePress(props: PressHookProps): PressResult {\n let {\n onPress,\n onPressChange,\n onPressStart,\n onPressEnd,\n onPressUp,\n isDisabled,\n isPressed: isPressedProp,\n preventFocusOnPress,\n shouldCancelOnPointerExit,\n allowTextSelectionOnPress,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ref: _, // Removing `ref` from `domProps` because TypeScript is dumb\n ...domProps\n } = usePressResponderContext(props);\n\n let [isPressed, setPressed] = useState(false);\n let ref = useRef<PressState>({\n isPressed: false,\n ignoreEmulatedMouseEvents: false,\n ignoreClickAfterPress: false,\n didFirePressStart: false,\n isTriggeringEvent: false,\n activePointerId: null,\n target: null,\n isOverTarget: false,\n pointerType: null,\n });\n\n let { addGlobalListener, removeAllGlobalListeners } = useGlobalListeners();\n\n let triggerPressStart = useEffectEvent((originalEvent: EventBase, pointerType: PointerType) => {\n let state = ref.current;\n if (isDisabled || state.didFirePressStart) {\n return false;\n }\n\n let shouldStopPropagation = true;\n state.isTriggeringEvent = true;\n if (onPressStart) {\n let event = new PressEvent('pressstart', pointerType, originalEvent);\n onPressStart(event);\n shouldStopPropagation = event.shouldStopPropagation;\n }\n\n if (onPressChange) {\n onPressChange(true);\n }\n\n state.isTriggeringEvent = false;\n state.didFirePressStart = true;\n setPressed(true);\n return shouldStopPropagation;\n });\n\n let triggerPressEnd = useEffectEvent((originalEvent: EventBase, pointerType: PointerType, wasPressed = true) => {\n let state = ref.current;\n if (!state.didFirePressStart) {\n return false;\n }\n\n state.ignoreClickAfterPress = true;\n state.didFirePressStart = false;\n state.isTriggeringEvent = true;\n\n let shouldStopPropagation = true;\n if (onPressEnd) {\n let event = new PressEvent('pressend', pointerType, originalEvent);\n onPressEnd(event);\n shouldStopPropagation = event.shouldStopPropagation;\n }\n\n if (onPressChange) {\n onPressChange(false);\n }\n\n setPressed(false);\n\n if (onPress && wasPressed && !isDisabled) {\n let event = new PressEvent('press', pointerType, originalEvent);\n onPress(event);\n shouldStopPropagation &&= event.shouldStopPropagation;\n }\n\n state.isTriggeringEvent = false;\n return shouldStopPropagation;\n });\n\n let triggerPressUp = useEffectEvent((originalEvent: EventBase, pointerType: PointerType) => {\n let state = ref.current;\n if (isDisabled) {\n return false;\n }\n\n if (onPressUp) {\n state.isTriggeringEvent = true;\n let event = new PressEvent('pressup', pointerType, originalEvent);\n onPressUp(event);\n state.isTriggeringEvent = false;\n return event.shouldStopPropagation;\n }\n\n return true;\n });\n\n let cancel = useEffectEvent((e: EventBase) => {\n let state = ref.current;\n if (state.isPressed && state.target) {\n if (state.isOverTarget && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n }\n state.isPressed = false;\n state.isOverTarget = false;\n state.activePointerId = null;\n state.pointerType = null;\n removeAllGlobalListeners();\n if (!allowTextSelectionOnPress) {\n restoreTextSelection(state.target);\n }\n }\n });\n\n let cancelOnPointerExit = useEffectEvent((e: EventBase) => {\n if (shouldCancelOnPointerExit) {\n cancel(e);\n }\n });\n\n let pressProps = useMemo(() => {\n let state = ref.current;\n let pressProps: DOMAttributes = {\n onKeyDown(e) {\n if (isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && e.currentTarget.contains(e.target as Element)) {\n if (shouldPreventDefaultKeyboard(e.target as Element, e.key)) {\n e.preventDefault();\n }\n\n // If the event is repeating, it may have started on a different element\n // after which focus moved to the current element. Ignore these events and\n // only handle the first key down event.\n let shouldStopPropagation = true;\n if (!state.isPressed && !e.repeat) {\n state.target = e.currentTarget;\n state.isPressed = true;\n shouldStopPropagation = triggerPressStart(e, 'keyboard');\n\n // Focus may move before the key up event, so register the event on the document\n // instead of the same element where the key down event occurred. Make it capturing so that it will trigger\n // before stopPropagation from useKeyboard on a child element may happen and thus we can still call triggerPress for the parent element.\n let originalTarget = e.currentTarget;\n let pressUp = (e) => {\n if (\n isValidKeyboardEvent(e, originalTarget) &&\n !e.repeat &&\n originalTarget.contains(e.target as Element) &&\n state.target\n ) {\n triggerPressUp(createEvent(state.target, e), 'keyboard');\n }\n };\n\n addGlobalListener(getOwnerDocument(e.currentTarget), 'keyup', chain(pressUp, onKeyUp), true);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n // Keep track of the keydown events that occur while the Meta (e.g. Command) key is held.\n // macOS has a bug where keyup events are not fired while the Meta key is down.\n // When the Meta key itself is released we will get an event for that, and we'll act as if\n // all of these other keys were released as well.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1393524\n // https://bugs.webkit.org/show_bug.cgi?id=55291\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1299553\n if (e.metaKey && isMac()) {\n state.metaKeyEvents?.set(e.key, e.nativeEvent);\n }\n } else if (e.key === 'Meta') {\n state.metaKeyEvents = new Map();\n }\n },\n onClick(e) {\n if (e && !e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (e && e.button === 0 && !state.isTriggeringEvent && !(openLink as any).isOpening) {\n let shouldStopPropagation = true;\n if (isDisabled) {\n e.preventDefault();\n }\n\n // If triggered from a screen reader or by using element.click(),\n // trigger as if it were a keyboard click.\n if (\n !state.ignoreClickAfterPress &&\n !state.ignoreEmulatedMouseEvents &&\n !state.isPressed &&\n (state.pointerType === 'virtual' || isVirtualClick(e.nativeEvent))\n ) {\n // Ensure the element receives focus (VoiceOver on iOS does not do this)\n if (!isDisabled && !preventFocusOnPress) {\n focusWithoutScrolling(e.currentTarget);\n }\n\n let stopPressStart = triggerPressStart(e, 'virtual');\n let stopPressUp = triggerPressUp(e, 'virtual');\n let stopPressEnd = triggerPressEnd(e, 'virtual');\n shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;\n }\n\n state.ignoreEmulatedMouseEvents = false;\n state.ignoreClickAfterPress = false;\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n }\n },\n };\n\n let onKeyUp = (e: KeyboardEvent) => {\n if (state.isPressed && state.target && isValidKeyboardEvent(e, state.target)) {\n if (shouldPreventDefaultKeyboard(e.target as Element, e.key)) {\n e.preventDefault();\n }\n\n let target = e.target as Element;\n triggerPressEnd(createEvent(state.target, e), 'keyboard', state.target.contains(target));\n removeAllGlobalListeners();\n\n // If a link was triggered with a key other than Enter, open the URL ourselves.\n // This means the link has a role override, and the default browser behavior\n // only applies when using the Enter key.\n if (e.key !== 'Enter' && isHTMLAnchorLink(state.target) && state.target.contains(target) && !e[LINK_CLICKED]) {\n // Store a hidden property on the event so we only trigger link click once,\n // even if there are multiple usePress instances attached to the element.\n e[LINK_CLICKED] = true;\n openLink(state.target, e, false);\n }\n\n state.isPressed = false;\n state.metaKeyEvents?.delete(e.key);\n } else if (e.key === 'Meta' && state.metaKeyEvents?.size) {\n // If we recorded keydown events that occurred while the Meta key was pressed,\n // and those haven't received keyup events already, fire keyup events ourselves.\n // See comment above for more info about the macOS bug causing this.\n let events = state.metaKeyEvents;\n state.metaKeyEvents = undefined;\n for (let event of events.values()) {\n state.target?.dispatchEvent(new KeyboardEvent('keyup', event));\n }\n }\n };\n\n if (typeof PointerEvent !== 'undefined') {\n pressProps.onPointerDown = (e) => {\n // Only handle left clicks, and ignore events that bubbled through portals.\n if (e.button !== 0 || !e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n // iOS safari fires pointer events from VoiceOver with incorrect coordinates/target.\n // Ignore and let the onClick handler take care of it instead.\n // https://bugs.webkit.org/show_bug.cgi?id=222627\n // https://bugs.webkit.org/show_bug.cgi?id=223202\n if (isVirtualPointerEvent(e.nativeEvent)) {\n state.pointerType = 'virtual';\n return;\n }\n\n // Due to browser inconsistencies, especially on mobile browsers, we prevent\n // default on pointer down and handle focusing the pressable element ourselves.\n if (shouldPreventDefault(e.currentTarget as Element)) {\n e.preventDefault();\n }\n\n state.pointerType = e.pointerType;\n\n let shouldStopPropagation = true;\n if (!state.isPressed) {\n state.isPressed = true;\n state.isOverTarget = true;\n state.activePointerId = e.pointerId;\n state.target = e.currentTarget;\n\n if (!isDisabled && !preventFocusOnPress) {\n focusWithoutScrolling(e.currentTarget);\n }\n\n if (!allowTextSelectionOnPress) {\n disableTextSelection(state.target);\n }\n\n shouldStopPropagation = triggerPressStart(e, state.pointerType);\n\n addGlobalListener(getOwnerDocument(e.currentTarget), 'pointermove', onPointerMove, false);\n addGlobalListener(getOwnerDocument(e.currentTarget), 'pointerup', onPointerUp, false);\n addGlobalListener(getOwnerDocument(e.currentTarget), 'pointercancel', onPointerCancel, false);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n pressProps.onMouseDown = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (e.button === 0) {\n // Chrome and Firefox on touch Windows devices require mouse down events\n // to be canceled in addition to pointer events, or an extra asynchronous\n // focus event will be fired.\n if (shouldPreventDefault(e.currentTarget as Element)) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n }\n };\n\n pressProps.onPointerUp = (e) => {\n // iOS fires pointerup with zero width and height, so check the pointerType recorded during pointerdown.\n if (!e.currentTarget.contains(e.target as Element) || state.pointerType === 'virtual') {\n return;\n }\n\n // Only handle left clicks\n // Safari on iOS sometimes fires pointerup events, even\n // when the touch isn't over the target, so double check.\n if (e.button === 0 && isOverTarget(e, e.currentTarget)) {\n triggerPressUp(e, state.pointerType || e.pointerType);\n }\n };\n\n // Safari on iOS < 13.2 does not implement pointerenter/pointerleave events correctly.\n // Use pointer move events instead to implement our own hit testing.\n // See https://bugs.webkit.org/show_bug.cgi?id=199803\n let onPointerMove = (e: PointerEvent) => {\n if (e.pointerId !== state.activePointerId) {\n return;\n }\n\n if (state.target && isOverTarget(e, state.target)) {\n if (!state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = true;\n triggerPressStart(createEvent(state.target, e), state.pointerType);\n }\n } else if (state.target && state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = false;\n triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n cancelOnPointerExit(e);\n }\n };\n\n let onPointerUp = (e: PointerEvent) => {\n if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0 && state.target) {\n if (isOverTarget(e, state.target) && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType);\n } else if (state.isOverTarget && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n }\n\n state.isPressed = false;\n state.isOverTarget = false;\n state.activePointerId = null;\n state.pointerType = null;\n removeAllGlobalListeners();\n if (!allowTextSelectionOnPress) {\n restoreTextSelection(state.target);\n }\n }\n };\n\n let onPointerCancel = (e: PointerEvent) => {\n cancel(e);\n };\n\n pressProps.onDragStart = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n // Safari does not call onPointerCancel when a drag starts, whereas Chrome and Firefox do.\n cancel(e);\n };\n } else {\n pressProps.onMouseDown = (e) => {\n // Only handle left clicks\n if (e.button !== 0 || !e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n // Due to browser inconsistencies, especially on mobile browsers, we prevent\n // default on mouse down and handle focusing the pressable element ourselves.\n if (shouldPreventDefault(e.currentTarget)) {\n e.preventDefault();\n }\n\n if (state.ignoreEmulatedMouseEvents) {\n e.stopPropagation();\n return;\n }\n\n state.isPressed = true;\n state.isOverTarget = true;\n state.target = e.currentTarget;\n state.pointerType = isVirtualClick(e.nativeEvent) ? 'virtual' : 'mouse';\n\n if (!isDisabled && !preventFocusOnPress) {\n focusWithoutScrolling(e.currentTarget);\n }\n\n let shouldStopPropagation = triggerPressStart(e, state.pointerType);\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n addGlobalListener(getOwnerDocument(e.currentTarget), 'mouseup', onMouseUp, false);\n };\n\n pressProps.onMouseEnter = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n let shouldStopPropagation = true;\n if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n state.isOverTarget = true;\n shouldStopPropagation = triggerPressStart(e, state.pointerType);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n pressProps.onMouseLeave = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n let shouldStopPropagation = true;\n if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n state.isOverTarget = false;\n shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);\n cancelOnPointerExit(e);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n pressProps.onMouseUp = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (!state.ignoreEmulatedMouseEvents && e.button === 0) {\n triggerPressUp(e, state.pointerType || 'mouse');\n }\n };\n\n let onMouseUp = (e: MouseEvent) => {\n // Only handle left clicks\n if (e.button !== 0) {\n return;\n }\n\n state.isPressed = false;\n removeAllGlobalListeners();\n\n if (state.ignoreEmulatedMouseEvents) {\n state.ignoreEmulatedMouseEvents = false;\n return;\n }\n\n if (state.target && isOverTarget(e, state.target) && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType);\n } else if (state.target && state.isOverTarget && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n }\n\n state.isOverTarget = false;\n };\n\n pressProps.onTouchStart = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n let touch = getTouchFromEvent(e.nativeEvent);\n if (!touch) {\n return;\n }\n state.activePointerId = touch.identifier;\n state.ignoreEmulatedMouseEvents = true;\n state.isOverTarget = true;\n state.isPressed = true;\n state.target = e.currentTarget;\n state.pointerType = 'touch';\n\n // Due to browser inconsistencies, especially on mobile browsers, we prevent default\n // on the emulated mouse event and handle focusing the pressable element ourselves.\n if (!isDisabled && !preventFocusOnPress) {\n focusWithoutScrolling(e.currentTarget);\n }\n\n if (!allowTextSelectionOnPress) {\n disableTextSelection(state.target);\n }\n\n let shouldStopPropagation = triggerPressStart(createTouchEvent(state.target, e), state.pointerType);\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n addGlobalListener(getOwnerWindow(e.currentTarget), 'scroll', onScroll, true);\n };\n\n pressProps.onTouchMove = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (!state.isPressed) {\n e.stopPropagation();\n return;\n }\n\n let touch = getTouchById(e.nativeEvent, state.activePointerId);\n let shouldStopPropagation = true;\n if (touch && isOverTarget(touch, e.currentTarget)) {\n if (!state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = true;\n shouldStopPropagation = triggerPressStart(createTouchEvent(state.target!, e), state.pointerType);\n }\n } else if (state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = false;\n shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target!, e), state.pointerType, false);\n cancelOnPointerExit(createTouchEvent(state.target!, e));\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n pressProps.onTouchEnd = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (!state.isPressed) {\n e.stopPropagation();\n return;\n }\n\n let touch = getTouchById(e.nativeEvent, state.activePointerId);\n let shouldStopPropagation = true;\n if (touch && isOverTarget(touch, e.currentTarget) && state.pointerType != null) {\n triggerPressUp(createTouchEvent(state.target!, e), state.pointerType);\n shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target!, e), state.pointerType);\n } else if (state.isOverTarget && state.pointerType != null) {\n shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target!, e), state.pointerType, false);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n state.isPressed = false;\n state.activePointerId = null;\n state.isOverTarget = false;\n state.ignoreEmulatedMouseEvents = true;\n if (state.target && !allowTextSelectionOnPress) {\n restoreTextSelection(state.target);\n }\n removeAllGlobalListeners();\n };\n\n pressProps.onTouchCancel = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n e.stopPropagation();\n if (state.isPressed) {\n cancel(createTouchEvent(state.target!, e));\n }\n };\n\n let onScroll = (e: Event) => {\n if (state.isPressed && (e.target as Element).contains(state.target)) {\n cancel({\n currentTarget: state.target,\n shiftKey: false,\n ctrlKey: false,\n metaKey: false,\n altKey: false,\n });\n }\n };\n\n pressProps.onDragStart = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n cancel(e);\n };\n }\n\n return pressProps;\n }, [\n addGlobalListener,\n isDisabled,\n preventFocusOnPress,\n removeAllGlobalListeners,\n allowTextSelectionOnPress,\n cancel,\n cancelOnPointerExit,\n triggerPressEnd,\n triggerPressStart,\n triggerPressUp,\n ]);\n\n // Remove user-select: none in case component unmounts immediately after pressStart\n // eslint-disable-next-line arrow-body-style\n useEffect(() => {\n return () => {\n if (!allowTextSelectionOnPress) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n restoreTextSelection(ref.current.target ?? undefined);\n }\n };\n }, [allowTextSelectionOnPress]);\n\n return {\n isPressed: isPressedProp || isPressed,\n pressProps: mergeProps(domProps, pressProps),\n };\n}\n\nfunction isHTMLAnchorLink(target: Element): target is HTMLAnchorElement {\n return target.tagName === 'A' && target.hasAttribute('href');\n}\n\nfunction isValidKeyboardEvent(event: KeyboardEvent, currentTarget: Element): boolean {\n const { key, code } = event;\n const element = currentTarget as HTMLElement;\n const role = element.getAttribute('role');\n // Accessibility for keyboards. Space and Enter only.\n // \"Spacebar\" is for IE 11\n return (\n (key === 'Enter' || key === ' ' || key === 'Spacebar' || code === 'Space') &&\n !(\n (element instanceof getOwnerWindow(element).HTMLInputElement && !isValidInputKey(element, key)) ||\n element instanceof getOwnerWindow(element).HTMLTextAreaElement ||\n element.isContentEditable\n ) &&\n // Links should only trigger with Enter key\n !((role === 'link' || (!role && isHTMLAnchorLink(element))) && key !== 'Enter')\n );\n}\n\nfunction getTouchFromEvent(event: TouchEvent): Touch | null {\n const { targetTouches } = event;\n if (targetTouches.length > 0) {\n return targetTouches[0];\n }\n return null;\n}\n\nfunction getTouchById(event: TouchEvent, pointerId: null | number): null | Touch {\n const changedTouches = event.changedTouches;\n for (let i = 0; i < changedTouches.length; i++) {\n const touch = changedTouches[i];\n if (touch.identifier === pointerId) {\n return touch;\n }\n }\n return null;\n}\n\nfunction createTouchEvent(target: FocusableElement, e: RTouchEvent<FocusableElement>): EventBase {\n let clientX = 0;\n let clientY = 0;\n if (e.targetTouches && e.targetTouches.length === 1) {\n clientX = e.targetTouches[0].clientX;\n clientY = e.targetTouches[0].clientY;\n }\n return {\n currentTarget: target,\n shiftKey: e.shiftKey,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey,\n clientX,\n clientY,\n };\n}\n\nfunction createEvent(target: FocusableElement, e: EventBase): EventBase {\n let clientX = e.clientX;\n let clientY = e.clientY;\n return {\n currentTarget: target,\n shiftKey: e.shiftKey,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey,\n clientX,\n clientY,\n };\n}\n\ninterface Rect {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\ninterface EventPoint {\n clientX: number;\n clientY: number;\n width?: number;\n height?: number;\n radiusX?: number;\n radiusY?: number;\n}\n\nfunction getPointClientRect(point: EventPoint): Rect {\n let offsetX = 0;\n let offsetY = 0;\n if (point.width !== undefined) {\n offsetX = point.width / 2;\n } else if (point.radiusX !== undefined) {\n offsetX = point.radiusX;\n }\n if (point.height !== undefined) {\n offsetY = point.height / 2;\n } else if (point.radiusY !== undefined) {\n offsetY = point.radiusY;\n }\n\n return {\n top: point.clientY - offsetY,\n right: point.clientX + offsetX,\n bottom: point.clientY + offsetY,\n left: point.clientX - offsetX,\n };\n}\n\nfunction areRectanglesOverlapping(a: Rect, b: Rect) {\n // check if they cannot overlap on x axis\n if (a.left > b.right || b.left > a.right) {\n return false;\n }\n // check if they cannot overlap on y axis\n if (a.top > b.bottom || b.top > a.bottom) {\n return false;\n }\n return true;\n}\n\nfunction isOverTarget(point: EventPoint, target: Element) {\n let rect = target.getBoundingClientRect();\n let pointRect = getPointClientRect(point);\n return areRectanglesOverlapping(rect, pointRect);\n}\n\nfunction shouldPreventDefault(target: Element) {\n // We cannot prevent default if the target is a draggable element.\n return !(target instanceof HTMLElement) || !target.hasAttribute('draggable');\n}\n\nfunction shouldPreventDefaultKeyboard(target: Element, key: string) {\n if (target instanceof HTMLInputElement) {\n return !isValidInputKey(target, key);\n }\n\n if (target instanceof HTMLButtonElement) {\n return target.type !== 'submit' && target.type !== 'reset';\n }\n\n if (isHTMLAnchorLink(target)) {\n return false;\n }\n\n return true;\n}\n\nconst nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset',\n]);\n\nfunction isValidInputKey(target: HTMLInputElement, key: string) {\n // Only space should toggle checkboxes and radios, not enter.\n return target.type === 'checkbox' || target.type === 'radio' ? key === ' ' : nonTextInputTypes.has(target.type);\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { BaseEvent } from '../../react-types/shared';\nimport { SyntheticEvent } from 'react';\n\n/**\n * This function wraps a React event handler to make stopPropagation the default, and support continuePropagation instead.\n */\nexport function createEventHandler<T extends SyntheticEvent>(\n handler?: (e: BaseEvent<T>) => void\n): ((e: T) => void) | undefined {\n if (!handler) {\n return undefined;\n }\n\n let shouldStopPropagation = true;\n return (e: T) => {\n let event: BaseEvent<T> = {\n ...e,\n preventDefault() {\n e.preventDefault();\n },\n isDefaultPrevented() {\n return e.isDefaultPrevented();\n },\n stopPropagation() {\n console.error(\n 'stopPropagation is now the default behavior for events in React Spectrum. You can use continuePropagation() to revert this behavior.'\n );\n },\n continuePropagation() {\n shouldStopPropagation = false;\n },\n };\n\n handler(event);\n\n if (shouldStopPropagation) {\n e.stopPropagation();\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 */\n\nimport { createEventHandler } from './createEventHandler';\nimport { DOMAttributes, KeyboardEvents } from '../../react-types/shared';\n\nexport interface KeyboardProps extends KeyboardEvents {\n /** Whether the keyboard events should be disabled. */\n isDisabled?: boolean;\n}\n\nexport interface KeyboardResult {\n /** Props to spread onto the target element. */\n keyboardProps: DOMAttributes;\n}\n\n/**\n * Handles keyboard interactions for a focusable element.\n */\nexport function useKeyboard(props: KeyboardProps): KeyboardResult {\n return {\n keyboardProps: props.isDisabled\n ? {}\n : {\n onKeyDown: createEventHandler(props.onKeyDown),\n onKeyUp: createEventHandler(props.onKeyUp),\n },\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2021 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 */\n\nimport { RefObject, useCallback } from 'react';\nimport { ScrollEvents } from '../../react-types/shared';\nimport { useEvent } from '../utils';\n\nexport interface ScrollWheelProps extends ScrollEvents {\n /** Whether the scroll listener should be disabled. */\n isDisabled?: boolean;\n}\n\n// scroll wheel needs to be added not passively so it's cancelable, small helper hook to remember that\nexport function useScrollWheel(props: ScrollWheelProps, ref: RefObject<HTMLElement>): void {\n let { onScroll, isDisabled } = props;\n let onScrollHandler = useCallback(\n (e) => {\n // If the ctrlKey is pressed, this is a zoom event, do nothing.\n if (e.ctrlKey) {\n return;\n }\n\n // stop scrolling the page\n e.preventDefault();\n e.stopPropagation();\n\n if (onScroll) {\n onScroll({ deltaX: e.deltaX, deltaY: e.deltaY });\n }\n },\n [onScroll]\n );\n\n useEvent(ref, 'wheel', isDisabled ? undefined : onScrollHandler);\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { FocusableElement } from '../../react-types/shared';\nimport { focusWithoutScrolling, getOwnerDocument, runAfterTransition } from '../utils';\nimport { getInteractionModality } from '../interactions';\n\n/**\n * A utility function that focuses an element while avoiding undesired side effects such\n * as page scrolling and screen reader issues with CSS transitions.\n */\nexport function focusSafely(element: FocusableElement) {\n // If the user is interacting with a virtual cursor, e.g. screen reader, then\n // wait until after any animated transitions that are currently occurring on\n // the page before shifting focus. This avoids issues with VoiceOver on iOS\n // causing the page to scroll when moving focus if the element is transitioning\n // from off the screen.\n const ownerDocument = getOwnerDocument(element);\n if (getInteractionModality() === 'virtual') {\n let lastFocusedElement = ownerDocument.activeElement;\n runAfterTransition(() => {\n // If focus did not move and the element is still in the document, focus it.\n if (ownerDocument.activeElement === lastFocusedElement && element.isConnected) {\n focusWithoutScrolling(element);\n }\n });\n } else {\n focusWithoutScrolling(element);\n }\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { DOMAttributes, FocusableDOMProps, FocusableElement, FocusableProps } from '../../react-types/shared';\nimport { focusSafely } from './';\nimport { mergeProps, useObjectRef, useSyncRef } from '../utils';\nimport React, { ForwardedRef, MutableRefObject, ReactNode, RefObject, useContext, useEffect, useRef } from 'react';\nimport { useFocus, useKeyboard } from '../interactions';\n\nexport interface FocusableOptions extends FocusableProps, FocusableDOMProps {\n /** Whether focus should be disabled. */\n isDisabled?: boolean;\n}\n\nexport interface FocusableProviderProps extends DOMAttributes {\n /** The child element to provide DOM props to. */\n children?: ReactNode;\n}\n\ninterface FocusableContextValue extends FocusableProviderProps {\n ref?: MutableRefObject<FocusableElement | null>;\n}\n\nlet FocusableContext = React.createContext<FocusableContextValue | null>(null);\n\nfunction useFocusableContext(ref: RefObject<FocusableElement>): FocusableContextValue {\n let context = useContext(FocusableContext) || {};\n useSyncRef(context, ref);\n\n // eslint-disable-next-line\n let { ref: _, ...otherProps } = context;\n return otherProps;\n}\n\n/**\n * Provides DOM props to the nearest focusable child.\n */\nfunction FocusableProvider(props: FocusableProviderProps, ref: ForwardedRef<FocusableElement>) {\n let { children, ...otherProps } = props;\n let objRef = useObjectRef(ref);\n let context = {\n ...otherProps,\n ref: objRef,\n };\n\n return <FocusableContext.Provider value={context}>{children}</FocusableContext.Provider>;\n}\n\nlet _FocusableProvider = React.forwardRef(FocusableProvider);\nexport { _FocusableProvider as FocusableProvider };\n\nexport interface FocusableAria {\n /** Props for the focusable element. */\n focusableProps: DOMAttributes;\n}\n\n/**\n * Used to make an element focusable and capable of auto focus.\n */\nexport function useFocusable(props: FocusableOptions, domRef: RefObject<FocusableElement>): FocusableAria {\n let { focusProps } = useFocus(props);\n let { keyboardProps } = useKeyboard(props);\n let interactions = mergeProps(focusProps, keyboardProps);\n let domProps = useFocusableContext(domRef);\n let interactionProps = props.isDisabled ? {} : domProps;\n let autoFocusRef = useRef(props.autoFocus);\n\n useEffect(() => {\n if (autoFocusRef.current && domRef.current) {\n focusSafely(domRef.current);\n }\n autoFocusRef.current = false;\n }, [domRef]);\n\n return {\n focusableProps: mergeProps(\n {\n ...interactions,\n tabIndex: props.excludeFromTabOrder && !props.isDisabled ? -1 : undefined,\n },\n interactionProps\n ),\n };\n}\n","import { ChangeEvent, FocusEvent, KeyboardEvent } from 'react';\nimport { ValueOf } from '../../types';\nimport { TextFieldProps } from '../text-field';\n\n/**\n * Component variant.\n */\nexport const NumberFieldVariant = {\n default: 'default',\n underline: 'underline',\n} as const;\nexport type NumberFieldVariant = ValueOf<typeof NumberFieldVariant>;\n\n/**\n * Component props.\n */\nexport interface NumberFieldProps\n extends Omit<\n TextFieldProps,\n | 'defaultValue'\n | 'onChange'\n | 'value'\n | 'onBlur'\n | 'onFocus'\n | 'onKeyDown'\n | 'onKeyUp'\n | 'after'\n | 'internal'\n | 'pills'\n | 'placeholder'\n > {\n /** Handler that is called when the element receives focus. */\n onFocus?: (e: FocusEvent<Element>) => void;\n /** Handler that is called when the element loses focus. */\n onBlur?: (e: FocusEvent<Element>) => void;\n /** Handler that is called when the element's focus status changes. */\n onFocusChange?: (isFocused: boolean) => void;\n /** Handler that is called when a key is pressed. */\n onKeyDown?: (e: KeyboardEvent<HTMLElement>) => void;\n /** Handler that is called when a key is released. */\n onKeyUp?: (e: KeyboardEvent<HTMLElement>) => void;\n /**\n * Default value.\n * Used for uncontrolled version.\n */\n defaultValue?: number;\n /** Method to handle component change. */\n onChange?(value?: number, name?: string, event?: ChangeEvent<HTMLInputElement>): void;\n /**\n * Input value.\n * Used for controlled version.\n */\n value?: number;\n /** Placeholder. */\n placeholder?: number;\n /** A custom aria-label for the decrement button. If not provided, the localized string \"Decrement\" is used. */\n decrementAriaLabel?: string;\n /** A custom aria-label for the increment button. If not provided, the localized string \"Increment\" is used. */\n incrementAriaLabel?: string;\n /**\n * Enables or disables changing the value with scroll.\n */\n isWheelDisabled?: boolean;\n /**\n * Formatting options for the value displayed in the number field.\n * This also affects what characters are allowed to be typed by the user.\n */\n formatOptions?: Intl.NumberFormatOptions;\n /** The smallest value allowed for the input. */\n minValue?: number;\n /** The largest value allowed for the input. */\n maxValue?: number;\n /** The amount that the input value changes with each increment or decrement \"tick\". */\n step?: number;\n}\n\nexport type StyledNumberFieldProps = Omit<\n NumberFieldProps,\n 'color' | 'isColored' | 'isDisabled' | 'isInvalid' | 'isRequired' | 'onChange' | 'onBlur' | 'onFocus'\n> & {\n $hasLeftIcon: boolean;\n $hasContent: boolean;\n $isColored: NumberFieldProps['isColored'];\n $isDisabled: NumberFieldProps['isDisabled'];\n $isInvalid: NumberFieldProps['isInvalid'];\n $isFocused: boolean;\n $isFocusVisible: boolean;\n $isRequired: NumberFieldProps['isRequired'];\n $theme: NumberFieldProps['theme'];\n $variant: NumberFieldProps['variant'];\n};\n","/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2023 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 */\n\nimport { createContext, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { Validation, ValidationErrors, ValidationFunction, ValidationResult } from '../../react-types/shared';\n\nexport const VALID_VALIDITY_STATE: ValidityState = {\n badInput: false,\n customError: false,\n patternMismatch: false,\n rangeOverflow: false,\n rangeUnderflow: false,\n stepMismatch: false,\n tooLong: false,\n tooShort: false,\n typeMismatch: false,\n valueMissing: false,\n valid: true,\n};\n\nconst CUSTOM_VALIDITY_STATE: ValidityState = {\n ...VALID_VALIDITY_STATE,\n customError: true,\n valid: false,\n};\n\nexport const DEFAULT_VALIDATION_RESULT: ValidationResult = {\n isInvalid: false,\n validationDetails: VALID_VALIDITY_STATE,\n validationErrors: [],\n};\n\nexport const FormValidationContext = createContext<ValidationErrors>({});\n\nexport const privateValidationStateProp = '__formValidationState' + Date.now();\n\ninterface FormValidationProps<T> extends Validation<T> {\n builtinValidation?: ValidationResult;\n name?: string | string[];\n value: T;\n}\n\nexport interface FormValidationState {\n /** Realtime validation results, updated as the user edits the value. */\n realtimeValidation: ValidationResult;\n /** Currently displayed validation results, updated when the user commits their changes. */\n displayValidation: ValidationResult;\n /** Updates the current validation result. Not displayed to the user until `commitValidation` is called. */\n updateValidation(result: ValidationResult): void;\n /** Resets the displayed validation state to valid when the user resets the form. */\n resetValidation(): void;\n /** Commits the realtime validation so it is displayed to the user. */\n commitValidation(): void;\n}\n\nexport function useFormValidationState<T>(props: FormValidationProps<T>): FormValidationState {\n // Private prop for parent components to pass state to children.\n if (props[privateValidationStateProp]) {\n let { realtimeValidation, displayValidation, updateValidation, resetValidation, commitValidation } = props[\n privateValidationStateProp\n ] as FormValidationState;\n return { realtimeValidation, displayValidation, updateValidation, resetValidation, commitValidation };\n }\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useFormValidationStateImpl(props);\n}\n\nfunction useFormValidationStateImpl<T>(props: FormValidationProps<T>): FormValidationState {\n let { isInvalid, validationState, name, value, builtinValidation, validate, validationBehavior = 'aria' } = props;\n\n // backward compatibility.\n if (validationState) {\n isInvalid ||= validationState === 'invalid';\n }\n\n // If the isInvalid prop is controlled, update validation result in realtime.\n let controlledError: ValidationResult | null =\n isInvalid !== undefined\n ? {\n isInvalid,\n validationErrors: [],\n validationDetails: CUSTOM_VALIDITY_STATE,\n }\n : null;\n\n // Perform custom client side validation.\n let clientError: ValidationResult | null = useMemo(\n () => getValidationResult(runValidate(validate, value)),\n [validate, value]\n );\n\n if (builtinValidation?.validationDetails.valid) {\n builtinValidation = null;\n }\n\n // Get relevant server errors from the form.\n let serverErrors = useContext(FormValidationContext);\n let serverErrorMessages = useMemo(() => {\n if (name) {\n return Array.isArray(name) ? name.flatMap((name) => asArray(serverErrors[name])) : asArray(serverErrors[name]);\n }\n return [];\n }, [serverErrors, name]);\n\n // Show server errors when the form gets a new value, and clear when the user changes the value.\n let [lastServerErrors, setLastServerErrors] = useState(serverErrors);\n let [isServerErrorCleared, setServerErrorCleared] = useState(false);\n if (serverErrors !== lastServerErrors) {\n setLastServerErrors(serverErrors);\n setServerErrorCleared(false);\n }\n\n let serverError: ValidationResult | null = useMemo(\n () => getValidationResult(isServerErrorCleared ? [] : serverErrorMessages),\n [isServerErrorCleared, serverErrorMessages]\n );\n\n // Track the next validation state in a ref until commitValidation is called.\n let nextValidation = useRef(DEFAULT_VALIDATION_RESULT);\n let [currentValidity, setCurrentValidity] = useState(DEFAULT_VALIDATION_RESULT);\n\n let lastError = useRef(DEFAULT_VALIDATION_RESULT);\n let commitValidation = () => {\n if (!commitQueued) {\n return;\n }\n\n setCommitQueued(false);\n let error = clientError || builtinValidation || nextValidation.current;\n if (!isEqualValidation(error, lastError.current)) {\n lastError.current = error;\n setCurrentValidity(error);\n }\n };\n\n let [commitQueued, setCommitQueued] = useState(false);\n useEffect(commitValidation);\n\n // realtimeValidation is used to update the native input element's state based on custom validation logic.\n // displayValidation is the currently displayed validation state that the user sees (e.g. on input change/form submit).\n // With validationBehavior=\"aria\", all errors are displayed in realtime rather than on submit.\n let realtimeValidation =\n controlledError || serverError || clientError || builtinValidation || DEFAULT_VALIDATION_RESULT;\n let displayValidation =\n validationBehavior === 'native'\n ? controlledError || serverError || currentValidity\n : controlledError || serverError || clientError || builtinValidation || currentValidity;\n\n return {\n realtimeValidation,\n displayValidation,\n updateValidation(value) {\n // If validationBehavior is 'aria', update in realtime. Otherwise, store in a ref until commit.\n if (validationBehavior === 'aria' && !isEqualValidation(currentValidity, value)) {\n setCurrentValidity(value);\n } else {\n nextValidation.current = value;\n }\n },\n resetValidation() {\n // Update the currently displayed validation state to valid on form reset,\n // even if the native validity says it isn't. It'll show again on the next form submit.\n let error = DEFAULT_VALIDATION_RESULT;\n if (!isEqualValidation(error, lastError.current)) {\n lastError.current = error;\n setCurrentValidity(error);\n }\n\n // Do not commit validation after the next render. This avoids a condition where\n // useSelect calls commitValidation inside an onReset handler.\n if (validationBehavior === 'native') {\n setCommitQueued(false);\n }\n\n setServerErrorCleared(true);\n },\n commitValidation() {\n // Commit validation state so the user sees it on blur/change/submit. Also clear any server errors.\n // Wait until after the next render to commit so that the latest value has been validated.\n if (validationBehavior === 'native') {\n setCommitQueued(true);\n }\n setServerErrorCleared(true);\n },\n };\n}\n\nfunction asArray<T>(v: T | T[]): T[] {\n if (!v) {\n return [];\n }\n\n return Array.isArray(v) ? v : [v];\n}\n\nfunction runValidate<T>(validate: ValidationFunction<T>, value: T): string[] {\n if (typeof validate === 'function') {\n let e = validate(value);\n if (e && typeof e !== 'boolean') {\n return asArray(e);\n }\n }\n\n return [];\n}\n\nfunction getValidationResult(errors: string[]): ValidationResult | null {\n return errors.length\n ? {\n isInvalid: true,\n validationErrors: errors,\n validationDetails: CUSTOM_VALIDITY_STATE,\n }\n : null;\n}\n\nfunction isEqualValidation(a: ValidationResult | null, b: ValidationResult | null): boolean {\n if (a === b) {\n return true;\n }\n\n return (\n a &&\n b &&\n a.isInvalid === b.isInvalid &&\n a.validationErrors.length === b.validationErrors.length &&\n a.validationErrors.every((a, i) => a === b.validationErrors[i]) &&\n Object.entries(a.validationDetails).every(([k, v]) => b.validationDetails[k] === v)\n );\n}\n\nexport function mergeValidation(...results: ValidationResult[]): ValidationResult {\n let errors = new Set<string>();\n let isInvalid = false;\n let validationDetails = {\n ...VALID_VALIDITY_STATE,\n };\n\n for (let v of results) {\n for (let e of v.validationErrors) {\n errors.add(e);\n }\n\n // Only these properties apply for checkboxes.\n isInvalid ||= v.isInvalid;\n for (let key in validationDetails) {\n validationDetails[key] ||= v.validationDetails[key];\n }\n }\n\n validationDetails.valid = !isInvalid;\n return {\n isInvalid,\n validationErrors: [...errors],\n validationDetails,\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { clamp, snapValueToStep, useControlledState } from '../utils';\nimport { FormValidationState, useFormValidationState } from '../form';\nimport { NumberFieldProps } from '../../react-types/numberfield';\nimport { NumberFormatter, NumberParser } from '../../internationalized/number';\nimport { useCallback, useMemo, useState } from 'react';\n\nexport interface NumberFieldState extends FormValidationState {\n /**\n * The current text value of the input. Updated as the user types,\n * and formatted according to `formatOptions` on blur.\n */\n inputValue: string;\n /**\n * The currently parsed number value, or NaN if a valid number could not be parsed.\n * Updated based on the `inputValue` as the user types.\n */\n numberValue: number;\n /** The default value of the input. */\n defaultNumberValue: number;\n /** The minimum value of the number field. */\n minValue?: number;\n /** The maximum value of the number field. */\n maxValue?: number;\n /** Whether the current value can be incremented according to the maximum value and step. */\n canIncrement: boolean;\n /** Whether the current value can be decremented according to the minimum value and step. */\n canDecrement: boolean;\n /**\n * Validates a user input string according to the current locale and format options.\n * Values can be partially entered, and may be valid even if they cannot currently be parsed to a number.\n * Can be used to implement validation as a user types.\n */\n validate(value: string): boolean;\n /** Sets the current text value of the input. */\n setInputValue(val: string): void;\n /** Sets the number value. */\n setNumberValue(val: number): void;\n /**\n * Commits the current input value. The value is parsed to a number, clamped according\n * to the minimum and maximum values of the field, and snapped to the nearest step value.\n * This will fire the `onChange` prop with the new value, and if uncontrolled, update the `numberValue`.\n * Typically this is called when the field is blurred.\n */\n commit(): void;\n /** Increments the current input value to the next step boundary, and fires `onChange`. */\n increment(): void;\n /** Decrements the current input value to the next step boundary, and fires `onChange`. */\n decrement(): void;\n /** Sets the current value to the `maxValue` if any, and fires `onChange`. */\n incrementToMax(): void;\n /** Sets the current value to the `minValue` if any, and fires `onChange`. */\n decrementToMin(): void;\n}\n\nexport interface NumberFieldStateOptions extends NumberFieldProps {\n /**\n * The locale that should be used for parsing.\n * @default 'en-US'\n */\n locale: string;\n}\n\n/**\n * Provides state management for a number field component. Number fields allow users to enter a number,\n * and increment or decrement the value using stepper buttons.\n */\nexport function useNumberFieldState(props: NumberFieldStateOptions): NumberFieldState {\n let {\n minValue,\n maxValue,\n step,\n formatOptions,\n value,\n defaultValue = NaN,\n onChange,\n locale,\n isDisabled,\n isReadOnly,\n } = props;\n\n if (value === null) {\n value = NaN;\n }\n\n if (value !== undefined && !isNaN(value)) {\n if (step !== undefined && !isNaN(step)) {\n value = snapValueToStep(value, minValue, maxValue, step);\n } else {\n value = clamp(value, minValue, maxValue);\n }\n }\n\n if (!isNaN(defaultValue)) {\n if (step !== undefined && !isNaN(step)) {\n defaultValue = snapValueToStep(defaultValue, minValue, maxValue, step);\n } else {\n defaultValue = clamp(defaultValue, minValue, maxValue);\n }\n }\n\n let [numberValue, setNumberValue] = useControlledState<number>(\n value,\n isNaN(defaultValue) ? NaN : defaultValue,\n onChange\n );\n let [initialValue] = useState(numberValue);\n let [inputValue, setInputValue] = useState(() =>\n isNaN(numberValue) ? '' : new NumberFormatter(locale, formatOptions).format(numberValue)\n );\n\n let numberParser = useMemo(() => new NumberParser(locale, formatOptions), [locale, formatOptions]);\n let numberingSystem = useMemo(() => numberParser.getNumberingSystem(inputValue), [numberParser, inputValue]);\n let formatter = useMemo(\n () => new NumberFormatter(locale, { ...formatOptions, numberingSystem }),\n [locale, formatOptions, numberingSystem]\n );\n let intlOptions = useMemo(() => formatter.resolvedOptions(), [formatter]);\n let format = useCallback(\n (value: number) => (isNaN(value) || value === null ? '' : formatter.format(value)),\n [formatter]\n );\n\n let validation = useFormValidationState({\n ...props,\n value: numberValue,\n });\n\n let clampStep = step !== undefined && !isNaN(step) ? step : 1;\n if (intlOptions.style === 'percent' && (step === undefined || isNaN(step))) {\n clampStep = 0.01;\n }\n\n // Update the input value when the number value or format options change. This is done\n // in a useEffect so that the controlled behavior is correct and we only update the\n // textfield after prop changes.\n let [prevValue, setPrevValue] = useState(numberValue);\n let [prevLocale, setPrevLocale] = useState(locale);\n let [prevFormatOptions, setPrevFormatOptions] = useState(formatOptions);\n if (!Object.is(numberValue, prevValue) || locale !== prevLocale || formatOptions !== prevFormatOptions) {\n setInputValue(format(numberValue));\n setPrevValue(numberValue);\n setPrevLocale(locale);\n setPrevFormatOptions(formatOptions);\n }\n\n let parsedValue = useMemo(() => numberParser.parse(inputValue), [numberParser, inputValue]);\n let commit = () => {\n // Set to empty state if input value is empty\n if (!inputValue.length) {\n setNumberValue(NaN);\n setInputValue(value === undefined ? '' : format(numberValue));\n return;\n }\n\n // if it failed to parse, then reset input to formatted version of current number\n if (isNaN(parsedValue)) {\n setInputValue(format(numberValue));\n return;\n }\n\n // Clamp to min and max, round to the nearest step, and round to specified number of digits\n let clampedValue: number;\n if (step === undefined || isNaN(step)) {\n clampedValue = clamp(parsedValue, minValue, maxValue);\n } else {\n clampedValue = snapValueToStep(parsedValue, minValue, maxValue, step);\n }\n\n clampedValue = numberParser.parse(format(clampedValue));\n setNumberValue(clampedValue);\n\n // in a controlled state, the numberValue won't change, so we won't go back to our old input without help\n setInputValue(format(value === undefined ? clampedValue : numberValue));\n validation.commitValidation();\n };\n\n let safeNextStep = (operation: '+' | '-', minMax: number = 0) => {\n let prev = parsedValue;\n\n if (isNaN(prev)) {\n // if the input is empty, start from the min/max value when incrementing/decrementing,\n // or zero if there is no min/max value defined.\n let newValue = isNaN(minMax) ? 0 : minMax;\n return snapValueToStep(newValue, minValue, maxValue, clampStep);\n } else {\n // otherwise, first snap the current value to the nearest step. if it moves in the direction\n // we're going, use that value, otherwise add the step and snap that value.\n let newValue = snapValueToStep(prev, minValue, maxValue, clampStep);\n if ((operation === '+' && newValue > prev) || (operation === '-' && newValue < prev)) {\n return newValue;\n }\n\n return snapValueToStep(handleDecimalOperation(operation, prev, clampStep), minValue, maxValue, clampStep);\n }\n };\n\n let increment = () => {\n let newValue = safeNextStep('+', minValue);\n\n // if we've arrived at the same value that was previously in the state, the\n // input value should be updated to match\n // ex type 4, press increment, highlight the number in the input, type 4 again, press increment\n // you'd be at 5, then incrementing to 5 again, so no re-render would happen and 4 would be left in the input\n if (newValue === numberValue) {\n setInputValue(format(newValue));\n }\n\n setNumberValue(newValue);\n validation.commitValidation();\n };\n\n let decrement = () => {\n let newValue = safeNextStep('-', maxValue);\n\n if (newValue === numberValue) {\n setInputValue(format(newValue));\n }\n\n setNumberValue(newValue);\n validation.commitValidation();\n };\n\n let incrementToMax = () => {\n if (maxValue != null) {\n setNumberValue(snapValueToStep(maxValue, minValue, maxValue, clampStep));\n validation.commitValidation();\n }\n };\n\n let decrementToMin = () => {\n if (minValue != null) {\n setNumberValue(minValue);\n validation.commitValidation();\n }\n };\n\n let canIncrement = useMemo(\n () =>\n !isDisabled &&\n !isReadOnly &&\n (isNaN(parsedValue) ||\n maxValue === undefined ||\n isNaN(maxValue) ||\n snapValueToStep(parsedValue, minValue, maxValue, clampStep) > parsedValue ||\n handleDecimalOperation('+', parsedValue, clampStep) <= maxValue),\n [isDisabled, isReadOnly, minValue, maxValue, clampStep, parsedValue]\n );\n\n let canDecrement = useMemo(\n () =>\n !isDisabled &&\n !isReadOnly &&\n (isNaN(parsedValue) ||\n minValue === undefined ||\n isNaN(minValue) ||\n snapValueToStep(parsedValue, minValue, maxValue, clampStep) < parsedValue ||\n handleDecimalOperation('-', parsedValue, clampStep) >= minValue),\n [isDisabled, isReadOnly, minValue, maxValue, clampStep, parsedValue]\n );\n\n let validate = (value: string) => numberParser.isValidPartialNumber(value, minValue, maxValue);\n\n return {\n ...validation,\n validate,\n increment,\n incrementToMax,\n decrement,\n decrementToMin,\n canIncrement,\n canDecrement,\n minValue,\n maxValue,\n numberValue: parsedValue,\n defaultNumberValue: isNaN(defaultValue) ? initialValue : defaultValue,\n setNumberValue,\n setInputValue,\n inputValue,\n commit,\n };\n}\n\nfunction handleDecimalOperation(operator: '-' | '+', value1: number, value2: number): number {\n let result = operator === '+' ? value1 + value2 : value1 - value2;\n\n // Check if we have decimals\n if (value1 % 1 !== 0 || value2 % 1 !== 0) {\n const value1Decimal = value1.toString().split('.');\n const value2Decimal = value2.toString().split('.');\n const value1DecimalLength = (value1Decimal[1] && value1Decimal[1].length) || 0;\n const value2DecimalLength = (value2Decimal[1] && value2Decimal[1].length) || 0;\n const multiplier = Math.pow(10, Math.max(value1DecimalLength, value2DecimalLength));\n\n // Transform the decimals to integers based on the precision\n value1 = Math.round(value1 * multiplier);\n value2 = Math.round(value2 * multiplier);\n\n // Perform the operation on integers values to make sure we don't get a fancy decimal value\n result = operator === '+' ? value1 + value2 : value1 - value2;\n\n // Transform the integer result back to decimal\n result /= multiplier;\n }\n\n return result;\n}\n","import enUS from './en-US.json';\nimport frFR from './fr-FR.json';\n\nexport default {\n 'en-US': enUS,\n 'fr-FR': frFR,\n};\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { AriaLabelingProps, DOMAttributes, DOMProps, LabelableProps } from '../../react-types/shared';\nimport { ElementType, LabelHTMLAttributes } from 'react';\nimport { useId, useLabels } from '../utils';\n\nexport interface LabelAriaProps extends LabelableProps, DOMProps, AriaLabelingProps {\n /**\n * The HTML element used to render the label, e.g. 'label', or 'span'.\n * @default 'label'\n */\n labelElementType?: ElementType;\n}\n\nexport interface LabelAria {\n /** Props to apply to the label container element. */\n labelProps: DOMAttributes | LabelHTMLAttributes<HTMLLabelElement>;\n /** Props to apply to the field container element being labeled. */\n fieldProps: AriaLabelingProps & DOMProps;\n}\n\n/**\n * Provides the accessibility implementation for labels and their associated elements.\n * Labels provide context for user inputs.\n * @param props - The props for labels and fields.\n */\nexport function useLabel(props: LabelAriaProps): LabelAria {\n let { id, label, 'aria-labelledby': ariaLabelledby, 'aria-label': ariaLabel, labelElementType = 'label' } = props;\n\n id = useId(id);\n let labelId = useId();\n let labelProps = {};\n if (label) {\n ariaLabelledby = ariaLabelledby ? `${labelId} ${ariaLabelledby}` : labelId;\n labelProps = {\n id: labelId,\n htmlFor: labelElementType === 'label' ? id : undefined,\n };\n } else if (!ariaLabelledby && !ariaLabel) {\n console.warn(\n 'If you do not provide a visible label, you must specify an aria-label or aria-labelledby attribute for accessibility'\n );\n }\n\n let fieldProps = useLabels({\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n });\n\n return {\n labelProps,\n fieldProps,\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2021 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 */\n\nimport { DOMAttributes, HelpTextProps, Validation } from '../../react-types/shared';\nimport { LabelAria, LabelAriaProps, useLabel } from './useLabel';\nimport { mergeProps, useSlotId } from '../utils';\n\nexport interface AriaFieldProps extends LabelAriaProps, HelpTextProps, Omit<Validation<any>, 'isRequired'> {}\n\nexport interface FieldAria extends LabelAria {\n /** Props for the description element, if any. */\n descriptionProps: DOMAttributes;\n /** Props for the error message element, if any. */\n errorMessageProps: DOMAttributes;\n}\n\n/**\n * Provides the accessibility implementation for input fields.\n * Fields accept user input, gain context from their label, and may display a description or error message.\n * @param props - Props for the Field.\n */\nexport function useField(props: AriaFieldProps): FieldAria {\n let { description, errorMessage, isInvalid, validationState } = props;\n let { labelProps, fieldProps } = useLabel(props);\n\n let descriptionId = useSlotId([Boolean(description), Boolean(errorMessage), isInvalid, validationState]);\n let errorMessageId = useSlotId([Boolean(description), Boolean(errorMessage), isInvalid, validationState]);\n\n fieldProps = mergeProps(fieldProps, {\n 'aria-describedby':\n [\n descriptionId,\n // Use aria-describedby for error message because aria-errormessage is unsupported using VoiceOver or NVDA. See https://github.com/adobe/react-spectrum/issues/1346#issuecomment-740136268\n errorMessageId,\n props['aria-describedby'],\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n });\n\n return {\n labelProps,\n fieldProps,\n descriptionProps: {\n id: descriptionId,\n },\n errorMessageProps: {\n id: errorMessageId,\n },\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2023 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 */\n\nimport { FormValidationState } from '../../react-stately/form';\nimport { RefObject, useEffect } from 'react';\nimport { setInteractionModality } from '../interactions';\nimport { useEffectEvent, useLayoutEffect } from '../utils';\nimport { Validation, ValidationResult } from '../../react-types/shared';\n\ntype ValidatableElement = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n\ninterface FormValidationProps<T> extends Validation<T> {\n focus?: () => void;\n}\n\nexport function useFormValidation<T>(\n props: FormValidationProps<T>,\n state: FormValidationState,\n ref: RefObject<ValidatableElement> | undefined\n) {\n let { validationBehavior, focus } = props;\n\n // This is a useLayoutEffect so that it runs before the useEffect in useFormValidationState, which commits the validation change.\n useLayoutEffect(() => {\n if (validationBehavior === 'native' && ref?.current) {\n let errorMessage = state.realtimeValidation.isInvalid\n ? state.realtimeValidation.validationErrors.join(' ') || 'Invalid value.'\n : '';\n ref.current.setCustomValidity(errorMessage);\n\n // Prevent default tooltip for validation message.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=605277\n if (!ref.current.hasAttribute('title')) {\n ref.current.title = '';\n }\n\n if (!state.realtimeValidation.isInvalid) {\n state.updateValidation(getNativeValidity(ref.current));\n }\n }\n });\n\n let onReset = useEffectEvent(() => {\n state.resetValidation();\n });\n\n let onInvalid = useEffectEvent((e: Event) => {\n // Only commit validation if we are not already displaying one.\n // This avoids clearing server errors that the user didn't actually fix.\n if (!state.displayValidation.isInvalid) {\n state.commitValidation();\n }\n\n // Auto focus the first invalid input in a form, unless the error already had its default prevented.\n let form = ref?.current?.form;\n if (!e.defaultPrevented && ref && form && getFirstInvalidInput(form) === ref.current) {\n if (focus) {\n focus();\n } else {\n ref.current?.focus();\n }\n\n // Always show focus ring.\n setInteractionModality('keyboard');\n }\n\n // Prevent default browser error UI from appearing.\n e.preventDefault();\n });\n\n let onChange = useEffectEvent(() => {\n state.commitValidation();\n });\n\n useEffect(() => {\n let input = ref?.current;\n if (!input) {\n return;\n }\n\n let form = input.form;\n input.addEventListener('invalid', onInvalid);\n input.addEventListener('change', onChange);\n form?.addEventListener('reset', onReset);\n return () => {\n input!.removeEventListener('invalid', onInvalid);\n input!.removeEventListener('change', onChange);\n form?.removeEventListener('reset', onReset);\n };\n }, [ref, onInvalid, onChange, onReset, validationBehavior]);\n}\n\nfunction getValidity(input: ValidatableElement) {\n // The native ValidityState object is live, meaning each property is a getter that returns the current state.\n // We need to create a snapshot of the validity state at the time this function is called to avoid unpredictable React renders.\n let validity = input.validity;\n return {\n badInput: validity.badInput,\n customError: validity.customError,\n patternMismatch: validity.patternMismatch,\n rangeOverflow: validity.rangeOverflow,\n rangeUnderflow: validity.rangeUnderflow,\n stepMismatch: validity.stepMismatch,\n tooLong: validity.tooLong,\n tooShort: validity.tooShort,\n typeMismatch: validity.typeMismatch,\n valueMissing: validity.valueMissing,\n valid: validity.valid,\n };\n}\n\nfunction getNativeValidity(input: ValidatableElement): ValidationResult {\n return {\n isInvalid: !input.validity.valid,\n validationDetails: getValidity(input),\n validationErrors: input.validationMessage ? [input.validationMessage] : [],\n };\n}\n\nfunction getFirstInvalidInput(form: HTMLFormElement): ValidatableElement | null {\n for (let i = 0; i < form.elements.length; i++) {\n let element = form.elements[i] as ValidatableElement;\n if (!element.validity.valid) {\n return element;\n }\n }\n\n return null;\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { AriaTextFieldProps } from '../../react-types/textfield';\nimport { ChangeEvent, DOMFactory, HTMLAttributes, LabelHTMLAttributes, ReactDOM, RefObject, useEffect } from 'react';\nimport { DOMAttributes, ValidationResult } from '../../react-types/shared';\nimport { filterDOMProps, getOwnerWindow, mergeProps, useFormReset } from '../utils';\nimport { useControlledState } from '../../react-stately/utils';\nimport { useField } from '../label';\nimport { useFocusable } from '../focus';\nimport { useFormValidation } from '../form';\nimport { useFormValidationState } from '../../react-stately/form';\n\n/**\n * A map of HTML element names and their interface types.\n * For example `'a'` -> `HTMLAnchorElement`.\n */\ntype IntrinsicHTMLElements = {\n [K in keyof IntrinsicHTMLAttributes]: IntrinsicHTMLAttributes[K] extends HTMLAttributes<infer T> ? T : never;\n};\n\n/**\n * A map of HTML element names and their attribute interface types.\n * For example `'a'` -> `AnchorHTMLAttributes<HTMLAnchorElement>`.\n */\ntype IntrinsicHTMLAttributes = {\n [K in keyof ReactDOM]: ReactDOM[K] extends DOMFactory<infer T, any> ? T : never;\n};\n\ntype DefaultElementType = 'input';\n\n/**\n * The intrinsic HTML element names that `useTextField` supports; e.g. `input`,\n * `textarea`.\n */\ntype TextFieldIntrinsicElements = keyof Pick<IntrinsicHTMLElements, 'input' | 'textarea'>;\n\n/**\n * The HTML element interfaces that `useTextField` supports based on what is\n * defined for `TextFieldIntrinsicElements`; e.g. `HTMLInputElement`,\n * `HTMLTextAreaElement`.\n */\ntype TextFieldHTMLElementType = Pick<IntrinsicHTMLElements, TextFieldIntrinsicElements>;\n\n/**\n * The HTML attributes interfaces that `useTextField` supports based on what\n * is defined for `TextFieldIntrinsicElements`; e.g. `InputHTMLAttributes`,\n * `TextareaHTMLAttributes`.\n */\ntype TextFieldHTMLAttributesType = Pick<IntrinsicHTMLAttributes, TextFieldIntrinsicElements>;\n\n/**\n * The type of `inputProps` returned by `useTextField`; e.g. `InputHTMLAttributes`,\n * `TextareaHTMLAttributes`.\n */\ntype TextFieldInputProps<T extends TextFieldIntrinsicElements> = TextFieldHTMLAttributesType[T];\n\nexport interface AriaTextFieldOptions<T extends TextFieldIntrinsicElements> extends AriaTextFieldProps {\n /**\n * The HTML element used to render the input, e.g. 'input', or 'textarea'.\n * It determines whether certain HTML attributes will be included in `inputProps`.\n * For example, [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-type).\n * @default 'input'\n */\n inputElementType?: T;\n /**\n * Controls whether inputted text is automatically capitalized and, if so, in what manner.\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize).\n */\n autoCapitalize?: 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters';\n}\n\n/**\n * The type of `ref` object that can be passed to `useTextField` based on the given\n * intrinsic HTML element name; e.g.`RefObject<HTMLInputElement>`,\n * `RefObject<HTMLTextAreaElement>`.\n */\ntype TextFieldRefObject<T extends TextFieldIntrinsicElements> = RefObject<TextFieldHTMLElementType[T]>;\n\nexport interface TextFieldAria<T extends TextFieldIntrinsicElements = DefaultElementType> extends ValidationResult {\n /** Props for the input element. */\n inputProps: TextFieldInputProps<T>;\n /** Props for the text field's visible label element, if any. */\n labelProps: DOMAttributes | LabelHTMLAttributes<HTMLLabelElement>;\n /** Props for the text field's description element, if any. */\n descriptionProps: DOMAttributes;\n /** Props for the text field's error message element, if any. */\n errorMessageProps: DOMAttributes;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a text field.\n * @param props - Props for the text field.\n * @param ref - Ref to the HTML input or textarea element.\n */\nexport function useTextField<T extends TextFieldIntrinsicElements = DefaultElementType>(\n props: AriaTextFieldOptions<T>,\n ref: TextFieldRefObject<T>\n): TextFieldAria<T> {\n let {\n inputElementType = 'input',\n isDisabled = false,\n isRequired = false,\n isReadOnly = false,\n type = 'text',\n validationBehavior = 'aria',\n }: AriaTextFieldOptions<TextFieldIntrinsicElements> = props;\n let [value, setValue] = useControlledState<string>(props.value, props.defaultValue || '', props.onChange);\n let { focusableProps } = useFocusable(props, ref);\n let validationState = useFormValidationState({\n ...props,\n value,\n });\n let { isInvalid, validationErrors, validationDetails } = validationState.displayValidation;\n let { labelProps, fieldProps, descriptionProps, errorMessageProps } = useField({\n ...props,\n isInvalid,\n errorMessage: props.errorMessage || validationErrors,\n });\n let domProps = filterDOMProps(props, { labelable: true });\n\n const inputOnlyProps = {\n type,\n pattern: props.pattern,\n };\n\n useFormReset(ref, value, setValue);\n useFormValidation(props, validationState, ref);\n\n useEffect(() => {\n // This works around a React/Chrome bug that prevents textarea elements from validating when controlled.\n // We prevent React from updating defaultValue (i.e. children) of textarea when `value` changes,\n // which causes Chrome to skip validation. Only updating `value` is ok in our case since our\n // textareas are always controlled. React is planning on removing this synchronization in a\n // future major version.\n // https://github.com/facebook/react/issues/19474\n // https://github.com/facebook/react/issues/11896\n if (ref.current instanceof getOwnerWindow(ref.current).HTMLTextAreaElement) {\n let input = ref.current;\n Object.defineProperty(input, 'defaultValue', {\n get: () => input.value,\n set: () => {},\n configurable: true,\n });\n }\n }, [ref]);\n\n return {\n labelProps,\n inputProps: mergeProps(domProps, inputElementType === 'input' ? inputOnlyProps : undefined, {\n disabled: isDisabled,\n readOnly: isReadOnly,\n required: isRequired && validationBehavior === 'native',\n 'aria-required': (isRequired && validationBehavior === 'aria') || undefined,\n 'aria-invalid': isInvalid || undefined,\n 'aria-errormessage': props['aria-errormessage'],\n 'aria-activedescendant': props['aria-activedescendant'],\n 'aria-autocomplete': props['aria-autocomplete'],\n 'aria-haspopup': props['aria-haspopup'],\n value,\n onChange: (e: ChangeEvent<HTMLInputElement>) => setValue(e.target.value),\n autoComplete: props.autoComplete,\n autoCapitalize: props.autoCapitalize,\n maxLength: props.maxLength,\n minLength: props.minLength,\n name: props.name,\n placeholder: props.placeholder,\n inputMode: props.inputMode,\n\n // Clipboard events\n onCopy: props.onCopy,\n onCut: props.onCut,\n onPaste: props.onPaste,\n\n // Composition events\n onCompositionEnd: props.onCompositionEnd,\n onCompositionStart: props.onCompositionStart,\n onCompositionUpdate: props.onCompositionUpdate,\n\n // Selection events\n onSelect: props.onSelect,\n\n // Input events\n onBeforeInput: props.onBeforeInput,\n onInput: props.onInput,\n ...focusableProps,\n ...fieldProps,\n }),\n descriptionProps,\n errorMessageProps,\n isInvalid,\n validationErrors,\n validationDetails,\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2021 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 */\n\nimport { AriaTextFieldProps } from '../../react-types/textfield';\nimport { mergeProps, useEffectEvent } from '../utils';\nimport { RefObject, useEffect, useRef } from 'react';\nimport { TextFieldAria, useTextField } from './useTextField';\n\ninterface FormattedTextFieldState {\n validate: (val: string) => boolean;\n setInputValue: (val: string) => void;\n}\n\nfunction supportsNativeBeforeInputEvent() {\n return (\n typeof window !== 'undefined' &&\n window.InputEvent &&\n // @ts-ignore\n typeof InputEvent.prototype.getTargetRanges === 'function'\n );\n}\n\nexport function useFormattedTextField(\n props: AriaTextFieldProps,\n state: FormattedTextFieldState,\n inputRef: RefObject<HTMLInputElement>\n): TextFieldAria {\n // All browsers implement the 'beforeinput' event natively except Firefox\n // (currently behind a flag as of Firefox 84). React's polyfill does not\n // run in all cases that the native event fires, e.g. when deleting text.\n // Use the native event if available so that we can prevent invalid deletions.\n // We do not attempt to polyfill this in Firefox since it would be very complicated,\n // the benefit of doing so is fairly minor, and it's going to be natively supported soon.\n let onBeforeInputFallback = useEffectEvent((e: InputEvent) => {\n let input = inputRef.current;\n\n // Compute the next value of the input if the event is allowed to proceed.\n // See https://www.w3.org/TR/input-events-2/#interface-InputEvent-Attributes for a full list of input types.\n let nextValue: string;\n switch (e.inputType) {\n case 'historyUndo':\n case 'historyRedo':\n // Explicitly allow undo/redo. e.data is null in this case, but there's no need to validate,\n // because presumably the input would have already been validated previously.\n return;\n case 'insertLineBreak':\n // Explicitly allow \"insertLineBreak\" event, to allow onSubmit for \"enter\" key. e.data is null in this case.\n return;\n case 'deleteContent':\n case 'deleteByCut':\n case 'deleteByDrag':\n nextValue = input.value.slice(0, input.selectionStart) + input.value.slice(input.selectionEnd);\n break;\n case 'deleteContentForward':\n // This is potentially incorrect, since the browser may actually delete more than a single UTF-16\n // character. In reality, a full Unicode grapheme cluster consisting of multiple UTF-16 characters\n // or code points may be deleted. However, in our currently supported locales, there are no such cases.\n // If we support additional locales in the future, this may need to change.\n nextValue =\n input.selectionEnd === input.selectionStart\n ? input.value.slice(0, input.selectionStart) + input.value.slice(input.selectionEnd + 1)\n : input.value.slice(0, input.selectionStart) + input.value.slice(input.selectionEnd);\n break;\n case 'deleteContentBackward':\n nextValue =\n input.selectionEnd === input.selectionStart\n ? input.value.slice(0, input.selectionStart - 1) + input.value.slice(input.selectionStart)\n : input.value.slice(0, input.selectionStart) + input.value.slice(input.selectionEnd);\n break;\n case 'deleteSoftLineBackward':\n case 'deleteHardLineBackward':\n nextValue = input.value.slice(input.selectionStart);\n break;\n default:\n if (e.data != null) {\n nextValue = input.value.slice(0, input.selectionStart) + e.data + input.value.slice(input.selectionEnd);\n }\n break;\n }\n\n // If we did not compute a value, or the new value is invalid, prevent the event\n // so that the browser does not update the input text, move the selection, or add to\n // the undo/redo stack.\n if (nextValue == null || !state.validate(nextValue)) {\n e.preventDefault();\n }\n });\n\n useEffect(() => {\n if (!supportsNativeBeforeInputEvent()) {\n return;\n }\n\n let input = inputRef.current;\n input.addEventListener('beforeinput', onBeforeInputFallback, false);\n return () => {\n input.removeEventListener('beforeinput', onBeforeInputFallback, false);\n };\n }, [inputRef, onBeforeInputFallback]);\n\n let onBeforeInput = !supportsNativeBeforeInputEvent()\n ? (e) => {\n let nextValue =\n e.target.value.slice(0, e.target.selectionStart) + e.data + e.target.value.slice(e.target.selectionEnd);\n\n if (!state.validate(nextValue)) {\n e.preventDefault();\n }\n }\n : null;\n\n let {\n labelProps,\n inputProps: textFieldProps,\n descriptionProps,\n errorMessageProps,\n ...validation\n } = useTextField(props, inputRef);\n\n let compositionStartState = useRef(null);\n return {\n inputProps: mergeProps(textFieldProps, {\n onBeforeInput,\n onCompositionStart() {\n // Chrome does not implement Input Events Level 2, which specifies the insertFromComposition\n // and deleteByComposition inputType values for the beforeinput event. These are meant to occur\n // at the end of a composition (e.g. Pinyin IME, Android auto correct, etc.), and crucially, are\n // cancelable. The insertCompositionText and deleteCompositionText input types are not cancelable,\n // nor would we want to cancel them because the input from the user is incomplete at that point.\n // In Safari, insertFromComposition/deleteFromComposition will fire, however, allowing us to cancel\n // the final composition result if it is invalid. As a fallback for Chrome and Firefox, which either\n // don't support Input Events Level 2, or beforeinput at all, we store the state of the input when\n // the compositionstart event fires, and undo the changes in compositionend (below) if it is invalid.\n // Unfortunately, this messes up the undo/redo stack, but until insertFromComposition/deleteByComposition\n // are implemented, there is no other way to prevent composed input.\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=1022204\n let { value, selectionStart, selectionEnd } = inputRef.current;\n compositionStartState.current = { value, selectionStart, selectionEnd };\n },\n onCompositionEnd() {\n if (!state.validate(inputRef.current.value)) {\n // Restore the input value in the DOM immediately so we can synchronously update the selection position.\n // But also update the value in React state as well so it is correct for future updates.\n let { value, selectionStart, selectionEnd } = compositionStartState.current;\n inputRef.current.value = value;\n inputRef.current.setSelectionRange(selectionStart, selectionEnd);\n state.setInputValue(value);\n }\n },\n }),\n labelProps,\n descriptionProps,\n errorMessageProps,\n ...validation,\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\ntype Assertiveness = 'assertive' | 'polite';\n\n/* Inspired by https://github.com/AlmeroSteyn/react-aria-live */\nconst LIVEREGION_TIMEOUT_DELAY = 7000;\n\nlet liveAnnouncer: LiveAnnouncer | null = null;\n\n/**\n * Announces the message using screen reader technology.\n */\nexport function announce(\n message: string,\n assertiveness: Assertiveness = 'assertive',\n timeout = LIVEREGION_TIMEOUT_DELAY\n) {\n if (!liveAnnouncer) {\n liveAnnouncer = new LiveAnnouncer();\n }\n\n liveAnnouncer.announce(message, assertiveness, timeout);\n}\n\n/**\n * Stops all queued announcements.\n */\nexport function clearAnnouncer(assertiveness: Assertiveness) {\n if (liveAnnouncer) {\n liveAnnouncer.clear(assertiveness);\n }\n}\n\n/**\n * Removes the announcer from the DOM.\n */\nexport function destroyAnnouncer() {\n if (liveAnnouncer) {\n liveAnnouncer.destroy();\n liveAnnouncer = null;\n }\n}\n\n// LiveAnnouncer is implemented using vanilla DOM, not React. That's because as of React 18\n// ReactDOM.render is deprecated, and the replacement, ReactDOM.createRoot is moved into a\n// subpath import `react-dom/client`. That makes it hard for us to support multiple React versions.\n// As a global API, we can't use portals without introducing a breaking API change. LiveAnnouncer\n// is simple enough to implement without React, so that's what we do here.\n// See this discussion for more details: https://github.com/reactwg/react-18/discussions/125#discussioncomment-2382638\nclass LiveAnnouncer {\n node: HTMLElement | null;\n assertiveLog: HTMLElement;\n politeLog: HTMLElement;\n\n constructor() {\n this.node = document.createElement('div');\n this.node.dataset.liveAnnouncer = 'true';\n // copied from VisuallyHidden\n Object.assign(this.node.style, {\n border: 0,\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(50%)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n width: '1px',\n whiteSpace: 'nowrap',\n });\n\n this.assertiveLog = this.createLog('assertive');\n this.node.appendChild(this.assertiveLog);\n\n this.politeLog = this.createLog('polite');\n this.node.appendChild(this.politeLog);\n\n document.body.prepend(this.node);\n }\n\n createLog(ariaLive: string) {\n let node = document.createElement('div');\n node.setAttribute('role', 'log');\n node.setAttribute('aria-live', ariaLive);\n node.setAttribute('aria-relevant', 'additions');\n return node;\n }\n\n destroy() {\n if (!this.node) {\n return;\n }\n\n document.body.removeChild(this.node);\n this.node = null;\n }\n\n announce(message: string, assertiveness = 'assertive', timeout = LIVEREGION_TIMEOUT_DELAY) {\n if (!this.node) {\n return;\n }\n\n let node = document.createElement('div');\n node.textContent = message;\n\n if (assertiveness === 'assertive') {\n this.assertiveLog.appendChild(node);\n } else {\n this.politeLog.appendChild(node);\n }\n\n if (message !== '') {\n setTimeout(() => {\n node.remove();\n }, timeout);\n }\n }\n\n clear(assertiveness: Assertiveness) {\n if (!this.node) {\n return;\n }\n\n if (!assertiveness || assertiveness === 'assertive') {\n this.assertiveLog.innerHTML = '';\n }\n\n if (!assertiveness || assertiveness === 'polite') {\n this.politeLog.innerHTML = '';\n }\n }\n}\n","import enUS from './en-US.json';\nimport frFR from './fr-FR.json';\n\nexport default {\n 'en-US': enUS,\n 'fr-FR': frFR,\n};\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { announce, clearAnnouncer } from '../live-announcer';\nimport { AriaButtonProps } from '../../react-types/button';\nimport { DOMAttributes, InputBase, RangeInputBase, Validation, ValueBase } from '../../react-types/shared';\n// @ts-ignore\nimport intlMessages from './intl';\nimport { useEffect, useRef } from 'react';\nimport { useEffectEvent, useGlobalListeners } from '../utils';\n\nimport { useMessageFormatter } from '../i18n';\n\nexport interface SpinButtonProps extends InputBase, Validation<number>, ValueBase<number>, RangeInputBase<number> {\n textValue?: string;\n onIncrement?: () => void;\n onIncrementPage?: () => void;\n onDecrement?: () => void;\n onDecrementPage?: () => void;\n onDecrementToMin?: () => void;\n onIncrementToMax?: () => void;\n}\n\nexport interface SpinbuttonAria {\n spinButtonProps: DOMAttributes;\n incrementButtonProps: AriaButtonProps;\n decrementButtonProps: AriaButtonProps;\n}\n\nexport function useSpinButton(props: SpinButtonProps): SpinbuttonAria {\n const _async = useRef<number>();\n let {\n value,\n textValue,\n minValue,\n maxValue,\n isDisabled,\n isReadOnly,\n isRequired,\n onIncrement,\n onIncrementPage,\n onDecrement,\n onDecrementPage,\n onDecrementToMin,\n onIncrementToMax,\n } = props;\n const format = useMessageFormatter(intlMessages);\n\n const clearAsync = () => clearTimeout(_async.current);\n\n // eslint-disable-next-line arrow-body-style\n useEffect(() => {\n return () => clearAsync();\n }, []);\n\n let onKeyDown = (e) => {\n if (e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || isReadOnly) {\n return;\n }\n\n switch (e.key) {\n case 'PageUp':\n if (onIncrementPage) {\n e.preventDefault();\n onIncrementPage?.();\n break;\n }\n // fallthrough!\n case 'ArrowUp':\n case 'Up':\n if (onIncrement) {\n e.preventDefault();\n onIncrement?.();\n }\n break;\n case 'PageDown':\n if (onDecrementPage) {\n e.preventDefault();\n onDecrementPage?.();\n break;\n }\n // fallthrough\n case 'ArrowDown':\n case 'Down':\n if (onDecrement) {\n e.preventDefault();\n onDecrement?.();\n }\n break;\n case 'Home':\n if (onDecrementToMin) {\n e.preventDefault();\n onDecrementToMin?.();\n }\n break;\n case 'End':\n if (onIncrementToMax) {\n e.preventDefault();\n onIncrementToMax?.();\n }\n break;\n }\n };\n\n let isFocused = useRef(false);\n let onFocus = () => {\n isFocused.current = true;\n };\n\n let onBlur = () => {\n isFocused.current = false;\n };\n\n // Replace Unicode hyphen-minus (U+002D) with minus sign (U+2212).\n // This ensures that macOS VoiceOver announces it as \"minus\" even with other characters between the minus sign\n // and the number (e.g. currency symbol). Otherwise it announces nothing because it assumes the character is a hyphen.\n // In addition, replace the empty string with the word \"Empty\" so that iOS VoiceOver does not read \"50%\" for an empty field.\n let ariaTextValue = textValue === '' ? format('Empty') : (textValue || `${value}`).replace('-', '\\u2212');\n\n useEffect(() => {\n if (isFocused.current) {\n clearAnnouncer('assertive');\n announce(ariaTextValue, 'assertive');\n }\n }, [ariaTextValue]);\n\n const onIncrementPressStart = useEffectEvent((initialStepDelay: number) => {\n clearAsync();\n onIncrement?.();\n // Start spinning after initial delay\n _async.current = window.setTimeout(() => {\n if (maxValue === undefined || isNaN(maxValue) || value === undefined || isNaN(value) || value < maxValue) {\n onIncrementPressStart(60);\n }\n }, initialStepDelay);\n });\n\n const onDecrementPressStart = useEffectEvent((initialStepDelay: number) => {\n clearAsync();\n onDecrement?.();\n // Start spinning after initial delay\n _async.current = window.setTimeout(() => {\n if (minValue === undefined || isNaN(minValue) || value === undefined || isNaN(value) || value > minValue) {\n onDecrementPressStart(60);\n }\n }, initialStepDelay);\n });\n\n let cancelContextMenu = (e) => {\n e.preventDefault();\n };\n\n let { addGlobalListener, removeAllGlobalListeners } = useGlobalListeners();\n\n return {\n spinButtonProps: {\n role: 'spinbutton',\n 'aria-valuenow': value !== undefined && !isNaN(value) ? value : undefined,\n 'aria-valuetext': ariaTextValue,\n 'aria-valuemin': minValue,\n 'aria-valuemax': maxValue,\n 'aria-disabled': isDisabled || undefined,\n 'aria-readonly': isReadOnly || undefined,\n 'aria-required': isRequired || undefined,\n onKeyDown,\n onFocus,\n onBlur,\n },\n incrementButtonProps: {\n onPressStart: () => {\n onIncrementPressStart(400);\n addGlobalListener(window, 'contextmenu', cancelContextMenu);\n },\n onPressEnd: () => {\n clearAsync();\n removeAllGlobalListeners();\n },\n onFocus,\n onBlur,\n },\n decrementButtonProps: {\n onPressStart: () => {\n onDecrementPressStart(400);\n addGlobalListener(window, 'contextmenu', cancelContextMenu);\n },\n onPressEnd: () => {\n clearAsync();\n removeAllGlobalListeners();\n },\n onFocus,\n onBlur,\n },\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { AriaButtonProps } from '../../react-types/button';\nimport { AriaNumberFieldProps } from '../../react-types/numberfield';\nimport { chain, filterDOMProps, isAndroid, isIOS, isIPhone, mergeProps, useFormReset, useId } from '../utils';\nimport { DOMAttributes, GroupDOMAttributes, TextInputDOMProps, ValidationResult } from '../../react-types/shared';\nimport { InputHTMLAttributes, LabelHTMLAttributes, RefObject, useCallback, useMemo, useState } from 'react';\n// @ts-ignore\nimport intlMessages from './intl';\nimport { NumberFieldState } from '../../react-stately/numberfield';\nimport { privateValidationStateProp } from '../../react-stately/form';\nimport { useFocus, useFocusWithin, useScrollWheel } from '../interactions';\nimport { useFormattedTextField } from '../textfield';\nimport { useLocalizedStringFormatter, useNumberFormatter } from '../i18n';\nimport { useSpinButton } from '../spinbutton';\n\nexport interface NumberFieldAria extends ValidationResult {\n /** Props for the label element. */\n labelProps: LabelHTMLAttributes<HTMLLabelElement>;\n /** Props for the group wrapper around the input and stepper buttons. */\n groupProps: GroupDOMAttributes;\n /** Props for the input element. */\n inputProps: InputHTMLAttributes<HTMLInputElement>;\n /** Props for the increment button, to be passed to [useButton](useButton.html). */\n incrementButtonProps: AriaButtonProps;\n /** Props for the decrement button, to be passed to [useButton](useButton.html). */\n decrementButtonProps: AriaButtonProps;\n /** Props for the number field's description element, if any. */\n descriptionProps: DOMAttributes;\n /** Props for the number field's error message element, if any. */\n errorMessageProps: DOMAttributes;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a number field component.\n * Number fields allow users to enter a number, and increment or decrement the value using stepper buttons.\n */\nexport function useNumberField(\n props: AriaNumberFieldProps,\n state: NumberFieldState,\n inputRef: RefObject<HTMLInputElement | null>\n): NumberFieldAria {\n let {\n id,\n decrementAriaLabel,\n incrementAriaLabel,\n isDisabled,\n isReadOnly,\n isRequired,\n minValue,\n maxValue,\n autoFocus,\n label,\n formatOptions,\n onBlur = () => {},\n onFocus,\n onFocusChange,\n onKeyDown,\n onKeyUp,\n description,\n errorMessage,\n isWheelDisabled,\n ...otherProps\n } = props;\n\n let { increment, incrementToMax, decrement, decrementToMin, numberValue, inputValue, commit, commitValidation } =\n state;\n\n const stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/numberfield');\n\n let inputId = useId(id);\n let { focusProps } = useFocus({\n onBlur() {\n // Set input value to normalized valid value\n commit();\n },\n });\n\n let numberFormatter = useNumberFormatter(formatOptions);\n let intlOptions = useMemo(() => numberFormatter.resolvedOptions(), [numberFormatter]);\n\n // Replace negative textValue formatted using currencySign: 'accounting'\n // with a textValue that can be announced using a minus sign.\n let textValueFormatter = useNumberFormatter({ ...formatOptions, currencySign: undefined });\n let textValue = useMemo(\n () => (isNaN(numberValue) ? '' : textValueFormatter.format(numberValue)),\n [textValueFormatter, numberValue]\n );\n\n let {\n spinButtonProps,\n incrementButtonProps: incButtonProps,\n decrementButtonProps: decButtonProps,\n } = useSpinButton({\n isDisabled,\n isReadOnly,\n isRequired,\n maxValue,\n minValue,\n onIncrement: increment,\n onIncrementToMax: incrementToMax,\n onDecrement: decrement,\n onDecrementToMin: decrementToMin,\n value: numberValue,\n textValue,\n });\n\n let [focusWithin, setFocusWithin] = useState(false);\n let { focusWithinProps } = useFocusWithin({ isDisabled, onFocusWithinChange: setFocusWithin });\n\n let onWheel = useCallback(\n (e) => {\n // if on a trackpad, users can scroll in both X and Y at once, check the magnitude of the change\n // if it's mostly in the X direction, then just return, the user probably doesn't mean to inc/dec\n // this isn't perfect, events come in fast with small deltas and a part of the scroll may give a false indication\n // especially if the user is scrolling near 45deg\n if (Math.abs(e.deltaY) <= Math.abs(e.deltaX)) {\n return;\n }\n if (e.deltaY > 0) {\n increment();\n } else if (e.deltaY < 0) {\n decrement();\n }\n },\n [decrement, increment]\n );\n // If the input isn't supposed to receive input, disable scrolling.\n let scrollingDisabled = isWheelDisabled || isDisabled || isReadOnly || !focusWithin;\n useScrollWheel({ onScroll: onWheel, isDisabled: scrollingDisabled }, inputRef);\n\n // The inputMode attribute influences the software keyboard that is shown on touch devices.\n // Browsers and operating systems are quite inconsistent about what keys are available, however.\n // We choose between numeric and decimal based on whether we allow negative and fractional numbers,\n // and based on testing on various devices to determine what keys are available in each inputMode.\n let hasDecimals = (intlOptions.maximumFractionDigits ?? 0) > 0;\n let hasNegative = state.minValue === undefined || isNaN(state.minValue) || state.minValue < 0;\n let inputMode: TextInputDOMProps['inputMode'] = 'numeric';\n if (isIPhone()) {\n // iPhone doesn't have a minus sign in either numeric or decimal.\n // Note this is only for iPhone, not iPad, which always has both\n // minus and decimal in numeric.\n if (hasNegative) {\n inputMode = 'text';\n } else if (hasDecimals) {\n inputMode = 'decimal';\n }\n } else if (isAndroid()) {\n // Android numeric has both a decimal point and minus key.\n // decimal does not have a minus key.\n if (hasNegative) {\n inputMode = 'numeric';\n } else if (hasDecimals) {\n inputMode = 'decimal';\n }\n }\n\n let onChange = (value) => {\n if (state.validate(value)) {\n state.setInputValue(value);\n }\n };\n\n let domProps = filterDOMProps(props);\n let onKeyDownEnter = useCallback(\n (e) => {\n if (e.nativeEvent.isComposing) {\n return;\n }\n\n if (e.key === 'Enter') {\n commit();\n commitValidation();\n } else {\n e.continuePropagation();\n }\n },\n [commit, commitValidation]\n );\n\n let { isInvalid, validationErrors, validationDetails } = state.displayValidation;\n let {\n labelProps,\n inputProps: textFieldProps,\n descriptionProps,\n errorMessageProps,\n } = useFormattedTextField(\n {\n ...otherProps,\n ...domProps,\n // These props are added to a hidden input rather than the formatted textfield.\n name: undefined,\n form: undefined,\n label,\n autoFocus,\n isDisabled,\n isReadOnly,\n isRequired,\n validate: undefined,\n [privateValidationStateProp]: state,\n value: inputValue,\n defaultValue: '!', // an invalid value so that form reset is ignored in onChange above\n autoComplete: 'off',\n 'aria-label': props['aria-label'] || undefined,\n 'aria-labelledby': props['aria-labelledby'] || undefined,\n id: inputId,\n type: 'text', // Can't use type=\"number\" because then we can't have things like $ in the field.\n inputMode,\n onChange,\n onBlur,\n onFocus,\n onFocusChange,\n onKeyDown: useMemo(() => chain(onKeyDownEnter, onKeyDown), [onKeyDownEnter, onKeyDown]),\n onKeyUp,\n description,\n errorMessage,\n },\n state,\n inputRef\n );\n\n useFormReset(inputRef, state.defaultNumberValue, state.setNumberValue);\n\n let inputProps: InputHTMLAttributes<HTMLInputElement> = mergeProps(spinButtonProps, focusProps, textFieldProps, {\n // override the spinbutton role, we can't focus a spin button with VO\n role: null,\n // ignore aria-roledescription on iOS so that required state will announce when it is present\n 'aria-roledescription': !isIOS() ? stringFormatter.format('numberField') : null,\n 'aria-valuemax': null,\n 'aria-valuemin': null,\n 'aria-valuenow': null,\n 'aria-valuetext': null,\n autoCorrect: 'off',\n spellCheck: 'false',\n });\n\n if (props.validationBehavior === 'native') {\n inputProps['aria-required'] = undefined;\n }\n\n let onButtonPressStart = (e) => {\n // If focus is already on the input, keep it there so we don't hide the\n // software keyboard when tapping the increment/decrement buttons.\n if (document.activeElement === inputRef.current) {\n return;\n }\n\n // Otherwise, when using a mouse, move focus to the input.\n // On touch, or with a screen reader, focus the button so that the software\n // keyboard does not appear and the screen reader cursor is not moved off the button.\n if (e.pointerType === 'mouse') {\n inputRef.current?.focus();\n } else {\n e.target.focus();\n }\n };\n\n // Determine the label for the increment and decrement buttons. There are 4 cases:\n //\n // 1. With a visible label that is a string: aria-label: `Increase ${props.label}`\n // 2. With a visible label that is JSX: aria-label: 'Increase', aria-labelledby: '${incrementId} ${labelId}'\n // 3. With an aria-label: aria-label: `Increase ${props['aria-label']}`\n // 4. With an aria-labelledby: aria-label: 'Increase', aria-labelledby: `${incrementId} ${props['aria-labelledby']}`\n //\n // (1) and (2) could possibly be combined and both use aria-labelledby. However, placing the label in\n // the aria-label string rather than using aria-labelledby gives more flexibility to translators to change\n // the order or add additional words around the label if needed.\n let fieldLabel = props['aria-label'] || (typeof props.label === 'string' ? props.label : '');\n let ariaLabelledby: string | undefined;\n if (!fieldLabel) {\n ariaLabelledby = props.label != null ? labelProps.id : props['aria-labelledby'];\n }\n\n let incrementId = useId();\n let decrementId = useId();\n\n let incrementButtonProps: AriaButtonProps = mergeProps(incButtonProps, {\n 'aria-label': incrementAriaLabel || stringFormatter.format('increase', { fieldLabel }).trim(),\n id: ariaLabelledby && !incrementAriaLabel ? incrementId : null,\n 'aria-labelledby': ariaLabelledby && !incrementAriaLabel ? `${incrementId} ${ariaLabelledby}` : null,\n 'aria-controls': inputId,\n excludeFromTabOrder: true,\n preventFocusOnPress: true,\n allowFocusWhenDisabled: true,\n isDisabled: !state.canIncrement,\n onPressStart: onButtonPressStart,\n });\n\n let decrementButtonProps: AriaButtonProps = mergeProps(decButtonProps, {\n 'aria-label': decrementAriaLabel || stringFormatter.format('decrease', { fieldLabel }).trim(),\n id: ariaLabelledby && !decrementAriaLabel ? decrementId : null,\n 'aria-labelledby': ariaLabelledby && !decrementAriaLabel ? `${decrementId} ${ariaLabelledby}` : null,\n 'aria-controls': inputId,\n excludeFromTabOrder: true,\n preventFocusOnPress: true,\n allowFocusWhenDisabled: true,\n isDisabled: !state.canDecrement,\n onPressStart: onButtonPressStart,\n });\n\n return {\n groupProps: {\n ...focusWithinProps,\n role: 'group',\n 'aria-disabled': isDisabled,\n 'aria-invalid': isInvalid ? 'true' : undefined,\n },\n labelProps,\n inputProps,\n incrementButtonProps,\n decrementButtonProps,\n errorMessageProps,\n descriptionProps,\n isInvalid,\n validationErrors,\n validationDetails,\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport {\n AnchorHTMLAttributes,\n ButtonHTMLAttributes,\n ElementType,\n HTMLAttributes,\n InputHTMLAttributes,\n RefObject,\n} from 'react';\nimport { AriaButtonProps } from '../../react-types/button';\nimport { DOMAttributes } from '../../react-types/shared';\nimport { filterDOMProps, mergeProps } from '../utils';\nimport { useFocusable } from '../focus';\nimport { usePress } from '../interactions';\n\nexport interface AriaButtonOptions<E extends ElementType> extends Omit<AriaButtonProps<E>, 'children'> {}\n\nexport interface ButtonAria<T> {\n /** Props for the button element. */\n buttonProps: T;\n /** Whether the button is currently pressed. */\n isPressed: boolean;\n}\n\n// Order with overrides is important: 'button' should be default\nexport function useButton(\n props: AriaButtonOptions<'button'>,\n ref: RefObject<HTMLButtonElement>\n): ButtonAria<ButtonHTMLAttributes<HTMLButtonElement>>;\nexport function useButton(\n props: AriaButtonOptions<'a'>,\n ref: RefObject<HTMLAnchorElement>\n): ButtonAria<AnchorHTMLAttributes<HTMLAnchorElement>>;\nexport function useButton(\n props: AriaButtonOptions<'div'>,\n ref: RefObject<HTMLDivElement>\n): ButtonAria<HTMLAttributes<HTMLDivElement>>;\nexport function useButton(\n props: AriaButtonOptions<'input'>,\n ref: RefObject<HTMLInputElement>\n): ButtonAria<InputHTMLAttributes<HTMLInputElement>>;\nexport function useButton(\n props: AriaButtonOptions<'span'>,\n ref: RefObject<HTMLSpanElement>\n): ButtonAria<HTMLAttributes<HTMLSpanElement>>;\nexport function useButton(props: AriaButtonOptions<ElementType>, ref: RefObject<Element>): ButtonAria<DOMAttributes>;\n/**\n * Provides the behavior and accessibility implementation for a button component. Handles mouse, keyboard, and touch interactions,\n * focus behavior, and ARIA props for both native button elements and custom element types.\n * @param props - Props to be applied to the button.\n * @param ref - A ref to a DOM element for the button.\n */\nexport function useButton(props: AriaButtonOptions<ElementType>, ref: RefObject<any>): ButtonAria<HTMLAttributes<any>> {\n let {\n elementType = 'button',\n isDisabled,\n onPress,\n onPressStart,\n onPressEnd,\n onPressUp,\n onPressChange,\n // @ts-ignore - undocumented\n preventFocusOnPress,\n // @ts-ignore - undocumented\n allowFocusWhenDisabled,\n // @ts-ignore\n onClick: deprecatedOnClick,\n href,\n target,\n rel,\n type = 'button',\n } = props;\n let additionalProps;\n if (elementType === 'button') {\n additionalProps = {\n type,\n disabled: isDisabled,\n };\n } else {\n additionalProps = {\n role: 'button',\n tabIndex: isDisabled ? undefined : 0,\n href: elementType === 'a' && isDisabled ? undefined : href,\n target: elementType === 'a' ? target : undefined,\n type: elementType === 'input' ? type : undefined,\n disabled: elementType === 'input' ? isDisabled : undefined,\n 'aria-disabled': !isDisabled || elementType === 'input' ? undefined : isDisabled,\n rel: elementType === 'a' ? rel : undefined,\n };\n }\n\n let { pressProps, isPressed } = usePress({\n onPressStart,\n onPressEnd,\n onPressChange,\n onPress,\n onPressUp,\n isDisabled,\n preventFocusOnPress,\n ref,\n });\n\n let { focusableProps } = useFocusable(props, ref);\n if (allowFocusWhenDisabled) {\n focusableProps.tabIndex = isDisabled ? -1 : focusableProps.tabIndex;\n }\n let buttonProps = mergeProps(focusableProps, pressProps, filterDOMProps(props, { labelable: true }));\n\n return {\n isPressed, // Used to indicate press state for visual\n buttonProps: mergeProps(additionalProps, buttonProps, {\n 'aria-haspopup': props['aria-haspopup'],\n 'aria-expanded': props['aria-expanded'],\n 'aria-controls': props['aria-controls'],\n 'aria-pressed': props['aria-pressed'],\n onClick: (e) => {\n if (deprecatedOnClick) {\n deprecatedOnClick(e);\n console.warn('onClick is deprecated, please use onPress');\n }\n },\n }),\n };\n}\n","import styled, { css } from 'styled-components';\nimport { baseStyling } from '../shared';\nimport { StyledNumberFieldProps, NumberFieldVariant } from './types';\nimport { Theme } from '../../types';\n\n/**\n * Component style.\n */\nexport const StyledNumberField = styled.div<StyledNumberFieldProps>`\n height: fit-content;\n position: relative;\n width: fit-content;\n margin: 0;\n min-width: 0;\n padding: 0;\n ${baseStyling}\n\n border: 0;\n display: inline-flex;\n flex-direction: column;\n vertical-align: top;\n\n ${({ $hasLeftIcon, $hasContent, $isFocused, $isDisabled, $isInvalid, $isColored, $theme, $variant }) => css`\n ${$isDisabled\n ? css`\n pointer-events: none;\n `\n : ''}\n\n .redsift-number-field__label {\n font-family: var(--redsift-typography-input-text-font-family);\n font-size: var(--redsift-typography-input-text-font-size);\n font-weight: var(--redsift-typography-input-text-font-weight);\n line-height: var(--redsift-typography-input-text-line-height);\n left: ${$hasLeftIcon && !$hasContent ? '32px' : '0'};\n overflow: hidden;\n pointer-events: none;\n position: absolute;\n text-overflow: ellipsis;\n top: ${$hasContent ? '-8px' : '-5px'};\n transform-origin: top left;\n transition: color 200ms cubic-bezier(0, 0, 0.2, 1) 0ms, transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms,\n max-width 200ms cubic-bezier(0, 0, 0.2, 1) 0ms;\n white-space: nowrap;\n z-index: 1;\n\n ${!$hasContent\n ? css`\n max-width: calc(100% - 24px - 42px - ${$variant === NumberFieldVariant.underline ? '0px' : '14px'});\n transform: translate(${$variant === NumberFieldVariant.underline ? '0px' : '14px'}, 16px) scale(1);\n `\n : css`\n max-width: calc(133% - 32px - 42px - ${$variant === NumberFieldVariant.underline ? '0px' : '14px'});\n transform: translate(${$variant === NumberFieldVariant.underline ? '0px' : '14px'}, 1px) scale(0.733);\n `}\n\n ${$isDisabled\n ? css`\n color: var(--redsift-color-neutral-light-grey);\n `\n : $isInvalid\n ? css`\n color: var(--redsift-color-notifications-error-primary);\n `\n : $isFocused\n ? css`\n color: ${$isColored\n ? 'var(--redsift-color-primary-n)'\n : 'var(--redsift-color-notifications-question-primary)'};\n `\n : css`\n color: var(--redsift-color-neutral-${$theme === Theme.light ? 'x-dark-grey' : 'light-grey'});\n `}\n }\n\n .redsift-number-field__input-wrapper {\n align-items: flex-start;\n box-sizing: border-box;\n cursor: text;\n display: inline-flex;\n min-height: 42px;\n position: relative;\n width: 100%;\n }\n\n .redsift-number-field-input-wrapper__input {\n background: none;\n border: 0;\n box-sizing: content-box;\n display: flex;\n flex: 1 1 auto;\n font-family: var(--redsift-typography-input-text-font-family);\n font-size: var(--redsift-typography-input-text-font-size);\n font-weight: var(--redsift-typography-input-text-font-weight);\n line-height: var(--redsift-typography-input-text-line-height);\n min-width: 0;\n min-width: 100px;\n padding: 2px 0;\n width: auto;\n padding-bottom: 6px;\n ${$variant !== NumberFieldVariant.underline && !$hasLeftIcon\n ? css`\n padding-left: 16px;\n `\n : ''}\n padding-top: 10px;\n\n ${$isDisabled\n ? css`\n color: var(--redsift-color-neutral-light-grey);\n `\n : css`\n color: var(--redsift-color-neutral-${$theme === Theme.dark ? 'white' : 'x-dark-grey'});\n `}\n }\n\n .redsift-number-field-input-wrapper__input::placeholder {\n color: var(--redsift-color-neutral-mid-grey);\n }\n\n .redsift-number-field-input-wrapper__input:focus {\n outline: 0;\n }\n\n .redsift-number-field-input-wrapper__fieldset {\n border-style: solid;\n bottom: 0;\n left: 1px;\n margin: 0;\n min-width: 0%;\n overflow: hidden;\n padding: 0 8px;\n pointer-events: none;\n position: absolute;\n right: 0;\n text-align: left;\n top: -5px;\n\n ${$variant === NumberFieldVariant.underline\n ? css`\n border-bottom-width: 2px;\n `\n : css`\n border-radius: 4px;\n border-width: 2px;\n `}\n\n ${$isDisabled\n ? css`\n border-color: var(--redsift-color-neutral-light-grey);\n `\n : $isInvalid\n ? css`\n border-color: var(--redsift-color-notifications-error-primary);\n `\n : $isFocused\n ? css`\n border-color: ${$isColored\n ? 'var(--redsift-color-primary-n)'\n : 'var(--redsift-color-notifications-question-primary)'};\n `\n : css`\n border-color: var(--redsift-color-neutral-mid-grey);\n `}\n }\n\n .redsift-number-field-input-wrapper-fieldset__legend {\n display: block;\n float: unset;\n font-size: 11px;\n height: 11px;\n overflow: hidden;\n padding: 0;\n visibility: hidden;\n white-space: nowrap;\n width: auto;\n\n ${!$hasContent\n ? css`\n max-width: 0.01px;\n transition: max-width 50ms cubic-bezier(0, 0, 0.2, 1) 0ms;\n `\n : css`\n max-width: calc(100% - 42px);\n transition: max-width 100ms cubic-bezier(0, 0, 0.2, 1) 50ms;\n `}\n }\n\n .redsift-number-field-input-wrapper-fieldset__legend > span {\n display: inline-block;\n opacity: 0;\n padding-left: 5px;\n padding-right: 5px;\n visibility: visible;\n }\n\n .redsift-icon-button {\n padding: 2px;\n }\n\n .redsift-number-field-input-wrapper__toolbar {\n > button {\n height: 21px;\n width: 42px;\n ${$isDisabled\n ? css`\n border-color: var(--redsift-color-neutral-light-grey);\n `\n : $isInvalid\n ? css`\n border-color: var(--redsift-color-notifications-error-primary);\n `\n : $isFocused\n ? css`\n border-color: ${$isColored\n ? 'var(--redsift-color-primary-n)'\n : 'var(--redsift-color-notifications-question-primary)'};\n `\n : css`\n border-color: var(--redsift-color-neutral-mid-grey);\n `}\n }\n\n .redsift-number-field-input-wrapper-toolbar__increment-button {\n border-top-width: 0;\n border-right-width: 0;\n border-bottom-width: 1px;\n border-left-width: 2px;\n border-top-left-radius: 0;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n .redsift-number-field-input-wrapper-toolbar__decrement-button {\n border-top-width: 1px;\n border-right-width: 0;\n border-bottom-width: 0;\n border-left-width: 2px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 0;\n }\n\n .redsift-number-field-input-wrapper-toolbar__increment-button--disabled,\n .redsift-number-field-input-wrapper-toolbar__decrement-button--disabled {\n background-color: rgba(0, 0, 0, 0.1);\n }\n\n .redsift-number-field-input-wrapper-toolbar__increment-button--disabled > .colored,\n .redsift-number-field-input-wrapper-toolbar__decrement-button--disabled > .colored {\n color: rgba(0, 0, 0, 0.5);\n }\n }\n\n ${$variant !== NumberFieldVariant.underline\n ? css`\n .redsift-icon.left {\n padding-left: 12px;\n padding-right: 8px;\n line-height: 28px;\n top: 10px;\n }\n `\n : css`\n .redsift-icon.left {\n padding-right: 8px;\n top: 10px;\n }\n `}\n `}\n`;\n","import React, { ComponentProps, forwardRef, MutableRefObject, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { useFocusRing } from '../../react-aria/react-aria/focus';\nimport { useFocusWithin } from '../../react-aria/react-aria/interactions';\nimport { useNumberFieldState } from '../../react-aria/react-stately/numberfield';\nimport { useNumberField } from '../../react-aria/react-aria/numberfield';\nimport { useButton } from '../../react-aria/react-aria/button';\nimport { Comp } from '../../types';\nimport { warnIfNoAccessibleLabelFound } from '../../utils/warnIfNoAccessibleLabelFound';\nimport { NumberFieldProps, NumberFieldVariant } from './types';\nimport { StyledNumberField } from './styles';\nimport { Icon } from '../../components/icon';\nimport { mdiMenuDown, mdiMenuUp } from '@redsift/icons';\nimport { Flexbox } from '../flexbox';\nimport { useTheme } from '../theme';\nimport { StyledIconButton } from '../icon-button/styles';\nimport { useLocale } from '../../react-aria/react-aria/i18n';\n\nconst COMPONENT_NAME = 'NumberField';\nconst CLASSNAME = 'redsift-number-field';\n\n/**\n * The NumberField component.\n * Can be used as controlled or uncontrolled.\n */\nexport const NumberField: Comp<NumberFieldProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n autoFocus,\n className,\n decrementAriaLabel,\n defaultValue,\n formatOptions,\n id,\n incrementAriaLabel,\n inputProps: propsInputProps,\n inputRef: propsInputRef,\n isColored = true,\n isDisabled,\n isInvalid,\n isReadOnly,\n isRequired,\n isWheelDisabled,\n label,\n leftIcon,\n maxValue,\n minValue,\n onBlur: onBlurProps,\n onChange: propsOnChange,\n onFocus: onFocusProps,\n onFocusChange,\n onKeyDown,\n onKeyUp,\n placeholder,\n step,\n theme: propsTheme,\n value,\n variant = NumberFieldVariant.default,\n ...forwardedProps\n } = props;\n\n const numberFieldProps = {\n id,\n isDisabled,\n isReadOnly,\n isRequired,\n minValue,\n maxValue,\n step,\n autoFocus,\n label,\n formatOptions,\n onBlur: onBlurProps,\n onFocus: onFocusProps,\n onFocusChange,\n onKeyDown,\n onKeyUp,\n value,\n defaultValue,\n onChange: propsOnChange,\n };\n\n const theme = useTheme(propsTheme);\n\n const { locale } = useLocale();\n const state = useNumberFieldState({ locale, ...numberFieldProps });\n const _inputRef = React.useRef(null);\n const inputRef = propsInputRef ?? _inputRef;\n const { labelProps, groupProps, inputProps, incrementButtonProps, decrementButtonProps } = useNumberField(\n {\n decrementAriaLabel,\n incrementAriaLabel,\n isWheelDisabled,\n ...numberFieldProps,\n },\n state,\n inputRef\n );\n\n const incrementButtonRef = useRef<HTMLButtonElement>(null);\n const { buttonProps: incrementButtonForwardedProps } = useButton(incrementButtonProps, incrementButtonRef);\n const decrementButtonRef = useRef<HTMLButtonElement>(null);\n const { buttonProps: decrementButtonForwardedProps } = useButton(decrementButtonProps, decrementButtonRef);\n\n const {\n isFocusVisible,\n isFocused,\n focusProps: { onFocus, onBlur },\n } = useFocusRing({\n autoFocus,\n });\n const [isFocusWithin, setFocusWithin] = useState(Boolean(autoFocus));\n const { focusWithinProps } = useFocusWithin({\n onFocusWithinChange: (isFocusWithin) => setFocusWithin(isFocusWithin),\n });\n\n warnIfNoAccessibleLabelFound(props as ComponentProps<'label'>, [label], 'NumberField');\n\n return (\n <StyledNumberField\n {...forwardedProps}\n {...focusWithinProps}\n $hasContent={\n isFocusWithin || Boolean(inputProps.value !== undefined && inputProps.value !== '') || Boolean(placeholder)\n }\n $hasLeftIcon={Boolean(leftIcon)}\n $isColored={isColored}\n $isDisabled={isDisabled}\n $isFocusVisible={isFocusVisible}\n $isInvalid={isInvalid || (isRequired && !(inputProps.value !== undefined))}\n $isRequired={isRequired}\n $isFocused={isFocused}\n $theme={theme}\n $variant={variant}\n className={classNames(NumberField.className, className)}\n ref={ref as MutableRefObject<HTMLDivElement>}\n >\n {label ? (\n <label {...labelProps} className={`${NumberField.className}__label`}>\n <span>{label}</span>\n </label>\n ) : null}\n <div className={`${NumberField.className}__input-wrapper`}>\n {leftIcon ? (\n <Icon color={isDisabled ? 'question' : 'black'} {...leftIcon} aria-hidden=\"true\" className=\"left\" />\n ) : null}\n <Flexbox {...groupProps} flexDirection=\"row\" gap=\"0\" width=\"100%\">\n <input\n {...propsInputProps}\n {...inputProps}\n onBlur={(event) => {\n onBlur?.(event);\n onBlurProps?.(event);\n inputProps.onBlur?.(event);\n }}\n onFocus={(event) => {\n onFocus?.(event);\n onFocusProps?.(event);\n inputProps.onFocus?.(event);\n }}\n placeholder={placeholder ? `${placeholder}` : undefined}\n className={`${NumberField.className}-input-wrapper__input`}\n ref={inputRef as MutableRefObject<HTMLInputElement>}\n width=\"100%\"\n />\n <Flexbox className={`${NumberField.className}-input-wrapper__toolbar`} flexDirection=\"column\" gap=\"0\">\n <StyledIconButton\n $color=\"grey\"\n $isActive={false}\n $isGradient={false}\n $isHovered={false}\n $isLoading={false}\n $variant={variant === NumberFieldVariant.underline ? 'unstyled' : 'secondary'}\n $theme={theme}\n {...incrementButtonForwardedProps}\n $isDisabled={isDisabled || incrementButtonForwardedProps.disabled}\n className={`${NumberField.className}-input-wrapper-toolbar__increment-button ${\n isDisabled || incrementButtonForwardedProps.disabled\n ? `${NumberField.className}-input-wrapper-toolbar__increment-button--disabled`\n : ''\n }`}\n >\n <Icon icon={mdiMenuUp} color={isDisabled ? undefined : 'grey'} />\n </StyledIconButton>\n <StyledIconButton\n $color=\"grey\"\n $isActive={false}\n $isGradient={false}\n $isHovered={false}\n $isLoading={false}\n $variant={variant === NumberFieldVariant.underline ? 'unstyled' : 'secondary'}\n $theme={theme}\n {...decrementButtonForwardedProps}\n $isDisabled={isDisabled || decrementButtonForwardedProps.disabled}\n className={`${NumberField.className}-input-wrapper-toolbar__decrement-button ${\n isDisabled || decrementButtonForwardedProps.disabled\n ? `${NumberField.className}-input-wrapper-toolbar__decrement-button--disabled`\n : ''\n }`}\n >\n <Icon icon={mdiMenuDown} color={isDisabled ? undefined : 'grey'} />\n </StyledIconButton>\n </Flexbox>\n </Flexbox>\n <fieldset aria-hidden=\"true\" className={`${NumberField.className}-input-wrapper__fieldset`}>\n <legend className={`${NumberField.className}-input-wrapper-fieldset__legend`}>\n {label ? <span>{label}</span> : null}\n </legend>\n </fieldset>\n </div>\n </StyledNumberField>\n );\n});\nNumberField.className = CLASSNAME;\nNumberField.displayName = COMPONENT_NAME;\n"],"names":["canUseDOM","Boolean","window","document","createElement","idsUpdaterMap","Map","useId","defaultId","value","setValue","useState","nextId","useRef","res","useSSRSafeId","updateValue","useCallback","val","current","set","useLayoutEffect","r","delete","useEffect","newId","mergeIds","idA","idB","setIdA","get","setIdB","useSlotId","depArray","arguments","length","undefined","id","resolvedId","setResolvedId","useValueEffect","updateId","getElementById","chain","_len","callbacks","Array","_key","callback","mergeProps","result","_objectSpread","i","props","key","a","b","charCodeAt","clsx","DOMPropNames","Set","labelablePropNames","linkPropNames","propRe","filterDOMProps","opts","labelable","isLink","propNames","filteredProps","prop","Object","prototype","hasOwnProperty","call","has","test","focusWithoutScrolling","element","supportsPreventScroll","focus","preventScroll","scrollableElements","getScrollableElements","restoreScrollPosition","supportsPreventScrollCached","focusElem","e","parent","parentNode","rootScrollingElement","scrollingElement","documentElement","HTMLElement","offsetHeight","scrollHeight","offsetWidth","scrollWidth","push","scrollTop","scrollLeft","openLink","target","modifiers","_window$event","_window$event$type","setOpening","metaKey","ctrlKey","altKey","shiftKey","isFirefox","event","type","startsWith","isMac","isWebKit","isIPad","process","env","NODE_ENV","KeyboardEvent","keyIdentifier","MouseEvent","bubbles","cancelable","isOpening","dispatchEvent","transitionsByElement","transitionCallbacks","setupGlobalEvents","isTransitionEvent","onTransitionStart","transitions","addEventListener","onTransitionEnd","once","add","propertyName","properties","size","removeEventListener","cb","clear","body","readyState","runAfterTransition","fn","requestAnimationFrame","useGlobalListeners","globalListeners","addGlobalListener","eventTarget","listener","options","removeGlobalListener","_globalListeners$curr","removeAllGlobalListeners","forEach","useLabels","defaultLabel","label","labelledBy","ids","trim","split","join","useSyncRef","context","ref","useEvent","handler","handleEvent","useEffectEvent","isDisabled","defaultValue","effect","nextRef","newValue","next","done","queue","useControlledState","onChange","stateValue","setStateValue","isControlledRef","isControlled","wasControlled","console","warn","currentValue","args","onChangeCaller","is","_len2","onChangeArgs","_key2","updateFunction","oldValue","_len3","functionArgs","_key3","interceptedValue","clamp","min","Infinity","max","Math","roundToStepPrecision","step","roundedValue","stepString","toString","pointIndex","indexOf","precision","pow","round","snapValueToStep","Number","remainder","isNaN","snappedValue","abs","sign","floor","useFormReset","initialValue","onReset","resetValue","handleReset","_ref$current","form","CURRENCY_SIGN_REGEX","RegExp","NUMBERING_SYSTEMS","NumberParser","constructor","locale","_defineProperty","parse","getNumberParserImpl","isValidPartialNumber","minValue","maxValue","getNumberingSystem","numberingSystem","numberParserCache","defaultParser","getCachedNumberParser","includes","parser","cacheKey","entries","sort","NumberParserImpl","_this$options$minimum","_this$options$maximum","formatter","Intl","NumberFormat","resolvedOptions","symbols","getSymbols","style","minimumFractionDigits","maximumFractionDigits","fullySanitizedValue","sanitize","group","replaceAll","decimal","replace","minusSign","numeral","index","isNegative","slice","NaN","_this$options$minimum2","_this$options$maximum2","NumberFormatter","format","currencySign","literals","String","fromCharCode","plusSign","nonLiteralParts","pluralNumbers","intlOptions","originalOptions","_allParts$find$value","_allParts$find","_posAllParts$find","_decimalParts$find","_allParts$find2","symbolFormatter","minimumSignificantDigits","maximumSignificantDigits","allParts","formatToParts","posAllParts","pluralParts","map","n","find","p","signDisplay","decimalParts","allPartsLiterals","filter","escapeRegex","pluralPartsLiterals","flatMap","sortedLiterals","numerals","useGrouping","reverse","indexes","d","str","string","state","savedUserSelect","modifiedElementMap","WeakMap","disableTextSelection","isIOS","documentObject","getOwnerDocument","webkitUserSelect","SVGElement","userSelect","restoreTextSelection","setTimeout","targetOldUserSelect","getAttribute","removeAttribute","PressResponderContext","React","createContext","register","displayName","usePressResponderContext","useContext","contextProps","_objectWithoutProperties","_excluded","_shouldStopPropagation","PressEvent","pointerType","originalEvent","_state$target","_classPrivateFieldInitSpec","writable","currentTarget","rect","getBoundingClientRect","x","y","clientX","clientY","left","top","width","height","continuePropagation","_classPrivateFieldSet","shouldStopPropagation","_classPrivateFieldGet","LINK_CLICKED","Symbol","usePress","_usePressResponderCon","onPress","onPressChange","onPressStart","onPressEnd","onPressUp","isPressed","isPressedProp","preventFocusOnPress","shouldCancelOnPointerExit","allowTextSelectionOnPress","_","domProps","_excluded2","setPressed","ignoreEmulatedMouseEvents","ignoreClickAfterPress","didFirePressStart","isTriggeringEvent","activePointerId","isOverTarget","triggerPressStart","triggerPressEnd","wasPressed","triggerPressUp","cancel","createEvent","cancelOnPointerExit","pressProps","useMemo","onKeyDown","isValidKeyboardEvent","nativeEvent","contains","shouldPreventDefaultKeyboard","preventDefault","repeat","originalTarget","pressUp","onKeyUp","stopPropagation","_state$metaKeyEvents","metaKeyEvents","onClick","button","isVirtualClick","stopPressStart","stopPressUp","stopPressEnd","_state$metaKeyEvents3","_state$metaKeyEvents2","isHTMLAnchorLink","events","values","_state$target2","PointerEvent","onPointerDown","isVirtualPointerEvent","shouldPreventDefault","pointerId","onPointerMove","onPointerUp","onPointerCancel","onMouseDown","onDragStart","onMouseUp","onMouseEnter","onMouseLeave","onTouchStart","touch","getTouchFromEvent","identifier","createTouchEvent","getOwnerWindow","onScroll","onTouchMove","getTouchById","onTouchEnd","onTouchCancel","_ref$current$target","tagName","hasAttribute","code","role","HTMLInputElement","isValidInputKey","HTMLTextAreaElement","isContentEditable","targetTouches","changedTouches","getPointClientRect","point","offsetX","offsetY","radiusX","radiusY","right","bottom","areRectanglesOverlapping","pointRect","HTMLButtonElement","nonTextInputTypes","createEventHandler","isDefaultPrevented","error","useKeyboard","keyboardProps","useScrollWheel","onScrollHandler","deltaX","deltaY","focusSafely","ownerDocument","getInteractionModality","lastFocusedElement","activeElement","isConnected","FocusableContext","useFocusableContext","otherProps","useFocusable","domRef","focusProps","useFocus","interactions","interactionProps","autoFocusRef","autoFocus","focusableProps","tabIndex","excludeFromTabOrder","NumberFieldVariant","default","underline","VALID_VALIDITY_STATE","badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing","valid","CUSTOM_VALIDITY_STATE","DEFAULT_VALIDATION_RESULT","isInvalid","validationDetails","validationErrors","FormValidationContext","privateValidationStateProp","Date","now","useFormValidationState","realtimeValidation","displayValidation","updateValidation","resetValidation","commitValidation","useFormValidationStateImpl","_builtinValidation","validationState","name","builtinValidation","validate","validationBehavior","controlledError","clientError","getValidationResult","runValidate","serverErrors","serverErrorMessages","isArray","asArray","lastServerErrors","setLastServerErrors","isServerErrorCleared","setServerErrorCleared","serverError","nextValidation","currentValidity","setCurrentValidity","lastError","commitQueued","setCommitQueued","isEqualValidation","v","errors","every","_ref","k","useNumberFieldState","formatOptions","isReadOnly","numberValue","setNumberValue","inputValue","setInputValue","numberParser","validation","clampStep","prevValue","setPrevValue","prevLocale","setPrevLocale","prevFormatOptions","setPrevFormatOptions","parsedValue","commit","clampedValue","safeNextStep","operation","minMax","prev","handleDecimalOperation","increment","decrement","incrementToMax","decrementToMin","canIncrement","canDecrement","defaultNumberValue","operator","value1","value2","value1Decimal","value2Decimal","value1DecimalLength","value2DecimalLength","multiplier","enUS","frFR","useLabel","ariaLabelledby","ariaLabel","labelElementType","labelId","labelProps","htmlFor","fieldProps","useField","description","errorMessage","descriptionId","errorMessageId","descriptionProps","errorMessageProps","useFormValidation","setCustomValidity","title","getNativeValidity","onInvalid","defaultPrevented","getFirstInvalidInput","_ref$current2","setInteractionModality","input","getValidity","validity","validationMessage","elements","useTextField","inputElementType","isRequired","inputOnlyProps","pattern","defineProperty","configurable","inputProps","disabled","readOnly","required","autoComplete","autoCapitalize","maxLength","minLength","placeholder","inputMode","onCopy","onCut","onPaste","onCompositionEnd","onCompositionStart","onCompositionUpdate","onSelect","onBeforeInput","onInput","supportsNativeBeforeInputEvent","InputEvent","getTargetRanges","useFormattedTextField","inputRef","onBeforeInputFallback","nextValue","inputType","selectionStart","selectionEnd","data","_useTextField","textFieldProps","compositionStartState","setSelectionRange","LIVEREGION_TIMEOUT_DELAY","liveAnnouncer","announce","message","assertiveness","timeout","LiveAnnouncer","clearAnnouncer","node","dataset","assign","border","clip","clipPath","margin","overflow","padding","position","whiteSpace","assertiveLog","createLog","appendChild","politeLog","prepend","ariaLive","setAttribute","destroy","removeChild","textContent","remove","innerHTML","useSpinButton","_async","textValue","onIncrement","onIncrementPage","onDecrement","onDecrementPage","onDecrementToMin","onIncrementToMax","useMessageFormatter","intlMessages","clearAsync","clearTimeout","isFocused","onFocus","onBlur","ariaTextValue","onIncrementPressStart","initialStepDelay","onDecrementPressStart","cancelContextMenu","spinButtonProps","incrementButtonProps","decrementButtonProps","useNumberField","_intlOptions$maximumF","decrementAriaLabel","incrementAriaLabel","onFocusChange","isWheelDisabled","stringFormatter","useLocalizedStringFormatter","inputId","numberFormatter","useNumberFormatter","textValueFormatter","incButtonProps","decButtonProps","focusWithin","setFocusWithin","focusWithinProps","useFocusWithin","onFocusWithinChange","onWheel","scrollingDisabled","hasDecimals","hasNegative","isIPhone","isAndroid","onKeyDownEnter","isComposing","autoCorrect","spellCheck","onButtonPressStart","_inputRef$current","fieldLabel","incrementId","decrementId","allowFocusWhenDisabled","groupProps","useButton","elementType","deprecatedOnClick","href","rel","additionalProps","buttonProps","StyledNumberField","styled","div","baseStyling","$hasLeftIcon","$hasContent","$isFocused","$isDisabled","$isInvalid","$isColored","$theme","$variant","css","Theme","light","dark","COMPONENT_NAME","CLASSNAME","NumberField","forwardRef","className","propsInputProps","propsInputRef","isColored","leftIcon","onBlurProps","propsOnChange","onFocusProps","theme","propsTheme","variant","forwardedProps","numberFieldProps","useTheme","useLocale","_inputRef","incrementButtonRef","incrementButtonForwardedProps","decrementButtonRef","decrementButtonForwardedProps","isFocusVisible","useFocusRing","isFocusWithin","warnIfNoAccessibleLabelFound","_extends","$isFocusVisible","$isRequired","classNames","Icon","color","Flexbox","flexDirection","gap","_inputProps$onBlur","_inputProps$onFocus","StyledIconButton","$color","$isActive","$isGradient","$isHovered","$isLoading","icon","mdiMenuUp","mdiMenuDown"],"mappings":"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,CAACC,KAAK,GAAG,aAAa,GAAG,YAAa,CAAA;AACvG,UAAY,CAAA,CAAA;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAQH,EAAAA,QAAQ,KAAK1R,kBAAkB,CAACE,SAAS,IAAI,CAACiR,YAAY,GACxDQ,GAAI,CAAA;AACd;AACA,UAAA,CAAW,GACD,EAAG,CAAA;AACb;AACA;AACA,MAAQL,EAAAA,WAAW,GACTK,GAAI,CAAA;AACd;AACA,UAAA,CAAW,GACDA,GAAI,CAAA;AACd,+CAAiDF,EAAAA,MAAM,KAAKG,KAAK,CAACE,IAAI,GAAG,OAAO,GAAG,aAAc,CAAA;AACjG,UAAY,CAAA,CAAA;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAA,EAAQJ,QAAQ,KAAK1R,kBAAkB,CAACE,SAAS,GACvCyR,GAAI,CAAA;AACd;AACA,UAAA,CAAW,GACDA,GAAI,CAAA;AACd;AACA;AACA,UAAY,CAAA,CAAA;AACZ;AACA,MAAQL,EAAAA,WAAW,GACTK,GAAI,CAAA;AACd;AACA,UAAW,CAAA,GACDJ,UAAU,GACVI,GAAI,CAAA;AACd;AACA,UAAW,CAAA,GACDN,UAAU,GACVM,GAAI,CAAA;AACd,0BAAA,EAA4BH,UAAU,GACtB,gCAAgC,GAChC,qDAAsD,CAAA;AACtE,UAAA,CAAW,GACDG,GAAI,CAAA;AACd;AACA,UAAY,CAAA,CAAA;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAQ,EAAA,CAACP,WAAW,GACVO,GAAI,CAAA;AACd;AACA;AACA,UAAA,CAAW,GACDA,GAAI,CAAA;AACd;AACA;AACA,UAAY,CAAA,CAAA;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA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"}
1
+ {"version":3,"file":"NumberField.js","sources":["../../src/react-aria/react-aria/utils/useId.ts","../../src/react-aria/react-aria/utils/chain.ts","../../src/react-aria/react-aria/utils/mergeProps.ts","../../src/react-aria/react-aria/utils/filterDOMProps.ts","../../src/react-aria/react-aria/utils/focusWithoutScrolling.ts","../../src/react-aria/react-aria/utils/openLink.tsx","../../src/react-aria/react-aria/utils/runAfterTransition.ts","../../src/react-aria/react-aria/utils/useGlobalListeners.ts","../../src/react-aria/react-aria/utils/useLabels.ts","../../src/react-aria/react-aria/utils/useSyncRef.ts","../../src/react-aria/react-aria/utils/useEvent.ts","../../src/react-aria/react-aria/utils/useValueEffect.ts","../../src/react-aria/react-stately/utils/useControlledState.ts","../../src/react-aria/react-stately/utils/number.ts","../../src/react-aria/react-aria/utils/useFormReset.ts","../../src/react-aria/internationalized/number/NumberParser.ts","../../src/react-aria/react-aria/interactions/textSelection.ts","../../src/react-aria/react-aria/interactions/context.ts","../../src/react-aria/react-aria/interactions/usePress.ts","../../src/react-aria/react-aria/interactions/createEventHandler.ts","../../src/react-aria/react-aria/interactions/useKeyboard.ts","../../src/react-aria/react-aria/interactions/useScrollWheel.ts","../../src/react-aria/react-aria/focus/focusSafely.ts","../../src/react-aria/react-aria/focus/useFocusable.tsx","../../src/components/number-field/types.ts","../../src/react-aria/react-stately/form/useFormValidationState.ts","../../src/react-aria/react-stately/numberfield/useNumberFieldState.ts","../../src/react-aria/react-aria/numberfield/intl/index.ts","../../src/react-aria/react-aria/label/useLabel.ts","../../src/react-aria/react-aria/label/useField.ts","../../src/react-aria/react-aria/form/useFormValidation.ts","../../src/react-aria/react-aria/textfield/useTextField.ts","../../src/react-aria/react-aria/textfield/useFormattedTextField.ts","../../src/react-aria/react-aria/live-announcer/LiveAnnouncer.tsx","../../src/react-aria/react-aria/spinbutton/intl/index.ts","../../src/react-aria/react-aria/spinbutton/useSpinButton.ts","../../src/react-aria/react-aria/numberfield/useNumberField.ts","../../src/react-aria/react-aria/button/useButton.ts","../../src/components/number-field/styles.ts","../../src/components/number-field/NumberField.tsx"],"sourcesContent":["/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { useLayoutEffect } from './useLayoutEffect';\nimport { useSSRSafeId } from '../ssr';\nimport { useValueEffect } from './';\n\n// copied from SSRProvider.tsx to reduce exports, if needed again, consider sharing\nlet canUseDOM = Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nlet idsUpdaterMap: Map<string, (v: string) => void> = new Map();\n\n/**\n * If a default is not provided, generate an id.\n * @param defaultId - Default component id.\n */\nexport function useId(defaultId?: string): string {\n let [value, setValue] = useState(defaultId);\n let nextId = useRef(null);\n\n let res = useSSRSafeId(value);\n\n let updateValue = useCallback((val) => {\n nextId.current = val;\n }, []);\n\n if (canUseDOM) {\n idsUpdaterMap.set(res, updateValue);\n }\n\n useLayoutEffect(() => {\n let r = res;\n return () => {\n idsUpdaterMap.delete(r);\n };\n }, [res]);\n\n // This cannot cause an infinite loop because the ref is updated first.\n // eslint-disable-next-line\n useEffect(() => {\n let newId = nextId.current;\n if (newId) {\n nextId.current = null;\n setValue(newId);\n }\n });\n\n return res;\n}\n\n/**\n * Merges two ids.\n * Different ids will trigger a side-effect and re-render components hooked up with `useId`.\n */\nexport function mergeIds(idA: string, idB: string): string {\n if (idA === idB) {\n return idA;\n }\n\n let setIdA = idsUpdaterMap.get(idA);\n if (setIdA) {\n setIdA(idB);\n return idB;\n }\n\n let setIdB = idsUpdaterMap.get(idB);\n if (setIdB) {\n setIdB(idA);\n return idA;\n }\n\n return idB;\n}\n\n/**\n * Used to generate an id, and after render, check if that id is rendered so we know\n * if we can use it in places such as labelledby.\n * @param depArray - When to recalculate if the id is in the DOM.\n */\nexport function useSlotId(depArray: ReadonlyArray<any> = []): string {\n let id = useId();\n let [resolvedId, setResolvedId] = useValueEffect(id);\n let updateId = useCallback(() => {\n setResolvedId(function* () {\n yield id;\n\n yield document.getElementById(id) ? id : undefined;\n });\n }, [id, setResolvedId]);\n\n useLayoutEffect(updateId, [id, updateId, ...depArray]);\n\n return resolvedId;\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\n/**\n * Calls all functions in the order they were chained with the same arguments.\n */\nexport function chain(...callbacks: any[]): (...args: any[]) => void {\n return (...args: any[]) => {\n for (let callback of callbacks) {\n if (typeof callback === 'function') {\n callback(...args);\n }\n }\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { chain } from './chain';\nimport clsx from 'clsx';\nimport { mergeIds } from './useId';\n\ninterface Props {\n [key: string]: any;\n}\n\ntype PropsArg = Props | null | undefined;\n\n// taken from: https://stackoverflow.com/questions/51603250/typescript-3-parameter-list-intersection-type/51604379#51604379\ntype TupleTypes<T> = { [P in keyof T]: T[P] } extends { [key: number]: infer V } ? NullToObject<V> : never;\ntype NullToObject<T> = T extends null | undefined ? {} : T;\n// eslint-disable-next-line no-undef, @typescript-eslint/no-unused-vars\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;\n\n/**\n * Merges multiple props objects together. Event handlers are chained,\n * classNames are combined, and ids are deduplicated - different ids\n * will trigger a side-effect and re-render components hooked up with `useId`.\n * For all other props, the last prop object overrides all previous ones.\n * @param args - Multiple sets of props to merge together.\n */\nexport function mergeProps<T extends PropsArg[]>(...args: T): UnionToIntersection<TupleTypes<T>> {\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: Props = { ...args[0] };\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\n // Chain events\n if (\n typeof a === 'function' &&\n typeof b === 'function' &&\n // This is a lot faster than a regex.\n key[0] === 'o' &&\n key[1] === 'n' &&\n key.charCodeAt(2) >= /* 'A' */ 65 &&\n key.charCodeAt(2) <= /* 'Z' */ 90\n ) {\n result[key] = chain(a, b);\n\n // Merge classnames, sometimes classNames are empty string which eval to false, so we just need to do a type check\n } else if (\n (key === 'className' || key === 'UNSAFE_className') &&\n typeof a === 'string' &&\n typeof b === 'string'\n ) {\n result[key] = clsx(a, b);\n } else if (key === 'id' && a && b) {\n result.id = mergeIds(a, b);\n // Override others\n } else {\n result[key] = b !== undefined ? b : a;\n }\n }\n }\n\n return result as UnionToIntersection<TupleTypes<T>>;\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { AriaLabelingProps, DOMProps, LinkDOMProps } from '../../react-types/shared';\n\nconst DOMPropNames = new Set(['id']);\n\nconst labelablePropNames = new Set(['aria-label', 'aria-labelledby', 'aria-describedby', 'aria-details']);\n\n// See LinkDOMProps in dom.d.ts.\nconst linkPropNames = new Set(['href', 'hrefLang', 'target', 'rel', 'download', 'ping', 'referrerPolicy']);\n\ninterface Options {\n /**\n * If labelling associated aria properties should be included in the filter.\n */\n labelable?: boolean;\n /** Whether the element is a link and should include DOM props for <a> elements. */\n isLink?: boolean;\n /**\n * A Set of other property names that should be included in the filter.\n */\n propNames?: Set<string>;\n}\n\nconst propRe = /^(data-.*)$/;\n\n/**\n * Filters out all props that aren't valid DOM props or defined via override prop obj.\n * @param props - The component props to be filtered.\n * @param opts - Props to override.\n */\nexport function filterDOMProps(\n props: DOMProps & AriaLabelingProps & LinkDOMProps,\n opts: Options = {}\n): DOMProps & AriaLabelingProps {\n let { labelable, isLink, propNames } = opts;\n let filteredProps = {};\n\n for (const prop in props) {\n if (\n Object.prototype.hasOwnProperty.call(props, prop) &&\n (DOMPropNames.has(prop) ||\n (labelable && labelablePropNames.has(prop)) ||\n (isLink && linkPropNames.has(prop)) ||\n propNames?.has(prop) ||\n propRe.test(prop))\n ) {\n filteredProps[prop] = props[prop];\n }\n }\n\n return filteredProps;\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { FocusableElement } from '../../react-types/shared';\n\n// This is a polyfill for element.focus({preventScroll: true});\n// Currently necessary for Safari and old Edge:\n// https://caniuse.com/#feat=mdn-api_htmlelement_focus_preventscroll_option\n// See https://bugs.webkit.org/show_bug.cgi?id=178583\n//\n\n// Original licensing for the following methods can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/calvellido/focus-options-polyfill\n\ninterface ScrollableElement {\n element: HTMLElement;\n scrollTop: number;\n scrollLeft: number;\n}\n\nexport function focusWithoutScrolling(element: FocusableElement) {\n if (supportsPreventScroll()) {\n element.focus({ preventScroll: true });\n } else {\n let scrollableElements = getScrollableElements(element);\n element.focus();\n restoreScrollPosition(scrollableElements);\n }\n}\n\nlet supportsPreventScrollCached: boolean | null = null;\nfunction supportsPreventScroll() {\n if (supportsPreventScrollCached == null) {\n supportsPreventScrollCached = false;\n try {\n let focusElem = document.createElement('div');\n focusElem.focus({\n get preventScroll() {\n supportsPreventScrollCached = true;\n return true;\n },\n });\n } catch (e) {\n // Ignore\n }\n }\n\n return supportsPreventScrollCached;\n}\n\nfunction getScrollableElements(element: FocusableElement): ScrollableElement[] {\n let parent = element.parentNode;\n let scrollableElements: ScrollableElement[] = [];\n let rootScrollingElement = document.scrollingElement || document.documentElement;\n\n while (parent instanceof HTMLElement && parent !== rootScrollingElement) {\n if (parent.offsetHeight < parent.scrollHeight || parent.offsetWidth < parent.scrollWidth) {\n scrollableElements.push({\n element: parent,\n scrollTop: parent.scrollTop,\n scrollLeft: parent.scrollLeft,\n });\n }\n parent = parent.parentNode;\n }\n\n if (rootScrollingElement instanceof HTMLElement) {\n scrollableElements.push({\n element: rootScrollingElement,\n scrollTop: rootScrollingElement.scrollTop,\n scrollLeft: rootScrollingElement.scrollLeft,\n });\n }\n\n return scrollableElements;\n}\n\nfunction restoreScrollPosition(scrollableElements: ScrollableElement[]) {\n for (let { element, scrollTop, scrollLeft } of scrollableElements) {\n element.scrollTop = scrollTop;\n element.scrollLeft = scrollLeft;\n }\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2023 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 */\n\nimport { focusWithoutScrolling, isMac, isWebKit } from './index';\nimport { Href, LinkDOMProps, RouterOptions } from '../../react-types/shared';\nimport { isFirefox, isIPad } from './platform';\nimport React, { createContext, ReactNode, useContext, useMemo } from 'react';\n\ninterface Router {\n isNative: boolean;\n open: (target: Element, modifiers: Modifiers, href: Href, routerOptions: RouterOptions | undefined) => void;\n useHref: (href: Href) => string;\n}\n\nconst RouterContext = createContext<Router>({\n isNative: true,\n open: openSyntheticLink,\n useHref: (href) => href,\n});\n\ninterface RouterProviderProps {\n navigate: (path: Href, routerOptions: RouterOptions | undefined) => void;\n useHref?: (href: Href) => string;\n children: ReactNode;\n}\n\n/**\n * A RouterProvider accepts a `navigate` function from a framework or client side router,\n * and provides it to all nested React Aria links to enable client side navigation.\n */\nexport function RouterProvider(props: RouterProviderProps) {\n let { children, navigate, useHref } = props;\n\n let ctx = useMemo(\n () => ({\n isNative: false,\n open: (target: Element, modifiers: Modifiers, href: Href, routerOptions: RouterOptions | undefined) => {\n getSyntheticLink(target, (link) => {\n if (shouldClientNavigate(link, modifiers)) {\n navigate(href, routerOptions);\n } else {\n openLink(link, modifiers);\n }\n });\n },\n useHref: useHref || ((href) => href),\n }),\n [navigate, useHref]\n );\n\n return <RouterContext.Provider value={ctx}>{children}</RouterContext.Provider>;\n}\n\nexport function useRouter(): Router {\n return useContext(RouterContext);\n}\n\ninterface Modifiers {\n metaKey?: boolean;\n ctrlKey?: boolean;\n altKey?: boolean;\n shiftKey?: boolean;\n}\n\nexport function shouldClientNavigate(link: HTMLAnchorElement, modifiers: Modifiers) {\n // Use getAttribute here instead of link.target. Firefox will default link.target to \"_parent\" when inside an iframe.\n let target = link.getAttribute('target');\n return (\n (!target || target === '_self') &&\n link.origin === location.origin &&\n !link.hasAttribute('download') &&\n !modifiers.metaKey && // open in new tab (mac)\n !modifiers.ctrlKey && // open in new tab (windows)\n !modifiers.altKey && // download\n !modifiers.shiftKey\n );\n}\n\nexport function openLink(target: HTMLAnchorElement, modifiers: Modifiers, setOpening = true) {\n let { metaKey, ctrlKey, altKey, shiftKey } = modifiers;\n\n // Firefox does not recognize keyboard events as a user action by default, and the popup blocker\n // will prevent links with target=\"_blank\" from opening. However, it does allow the event if the\n // Command/Control key is held, which opens the link in a background tab. This seems like the best we can do.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=257870 and https://bugzilla.mozilla.org/show_bug.cgi?id=746640.\n if (isFirefox() && window.event?.type?.startsWith('key') && target.target === '_blank') {\n if (isMac()) {\n metaKey = true;\n } else {\n ctrlKey = true;\n }\n }\n\n // WebKit does not support firing click events with modifier keys, but does support keyboard events.\n // https://github.com/WebKit/WebKit/blob/c03d0ac6e6db178f90923a0a63080b5ca210d25f/Source/WebCore/html/HTMLAnchorElement.cpp#L184\n let event =\n isWebKit() && isMac() && !isIPad() && process.env.NODE_ENV !== 'test'\n ? // @ts-ignore - keyIdentifier is a non-standard property, but it's what webkit expects\n new KeyboardEvent('keydown', { keyIdentifier: 'Enter', metaKey, ctrlKey, altKey, shiftKey })\n : new MouseEvent('click', { metaKey, ctrlKey, altKey, shiftKey, bubbles: true, cancelable: true });\n (openLink as any).isOpening = setOpening;\n focusWithoutScrolling(target);\n target.dispatchEvent(event);\n (openLink as any).isOpening = false;\n}\n// https://github.com/parcel-bundler/parcel/issues/8724\n(openLink as any).isOpening = false;\n\nfunction getSyntheticLink(target: Element, open: (link: HTMLAnchorElement) => void) {\n if (target instanceof HTMLAnchorElement) {\n open(target);\n } else if (target.hasAttribute('data-href')) {\n let link = document.createElement('a');\n link.href = target.getAttribute('data-href')!;\n if (target.hasAttribute('data-target')) {\n link.target = target.getAttribute('data-target')!;\n }\n if (target.hasAttribute('data-rel')) {\n link.rel = target.getAttribute('data-rel')!;\n }\n if (target.hasAttribute('data-download')) {\n link.download = target.getAttribute('data-download')!;\n }\n if (target.hasAttribute('data-ping')) {\n link.ping = target.getAttribute('data-ping')!;\n }\n if (target.hasAttribute('data-referrer-policy')) {\n link.referrerPolicy = target.getAttribute('data-referrer-policy')!;\n }\n target.appendChild(link);\n open(link);\n target.removeChild(link);\n }\n}\n\nfunction openSyntheticLink(target: Element, modifiers: Modifiers) {\n getSyntheticLink(target, (link) => openLink(link, modifiers));\n}\n\nexport function useSyntheticLinkProps(props: LinkDOMProps) {\n let router = useRouter();\n return {\n 'data-href': props.href ? router.useHref(props.href) : undefined,\n 'data-target': props.target,\n 'data-rel': props.rel,\n 'data-download': props.download,\n 'data-ping': props.ping,\n 'data-referrer-policy': props.referrerPolicy,\n };\n}\n\nexport function useLinkProps(props: LinkDOMProps) {\n let router = useRouter();\n return {\n href: props?.href ? router.useHref(props?.href) : undefined,\n target: props?.target,\n rel: props?.rel,\n download: props?.download,\n ping: props?.ping,\n referrerPolicy: props?.referrerPolicy,\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\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 transitionsByElement = new Map<EventTarget, Set<string>>();\n\n// A list of callbacks to call once there are no transitioning elements.\nlet transitionCallbacks = new Set<() => void>();\n\nfunction setupGlobalEvents() {\n if (typeof window === 'undefined') {\n return;\n }\n\n function isTransitionEvent(event: Event): event is TransitionEvent {\n return 'propertyName' in event;\n }\n\n let onTransitionStart = (e: Event) => {\n if (!isTransitionEvent(e) || !e.target) {\n return;\n }\n // Add the transitioning property to the list for this element.\n let transitions = transitionsByElement.get(e.target);\n if (!transitions) {\n transitions = new Set();\n transitionsByElement.set(e.target, transitions);\n\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 once: true,\n });\n }\n\n transitions.add(e.propertyName);\n };\n\n let onTransitionEnd = (e: Event) => {\n if (!isTransitionEvent(e) || !e.target) {\n return;\n }\n // Remove property from list of transitioning properties.\n let properties = transitionsByElement.get(e.target);\n if (!properties) {\n return;\n }\n\n properties.delete(e.propertyName);\n\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 transitionsByElement.delete(e.target);\n }\n\n // If no transitioning elements, call all of the queued callbacks.\n if (transitionsByElement.size === 0) {\n for (let cb of transitionCallbacks) {\n cb();\n }\n\n transitionCallbacks.clear();\n }\n };\n\n document.body.addEventListener('transitionrun', onTransitionStart);\n document.body.addEventListener('transitionend', onTransitionEnd);\n}\n\nif (typeof document !== 'undefined') {\n if (document.readyState !== 'loading') {\n setupGlobalEvents();\n } else {\n document.addEventListener('DOMContentLoaded', setupGlobalEvents);\n }\n}\n\nexport function runAfterTransition(fn: () => void) {\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 (transitionsByElement.size === 0) {\n fn();\n } else {\n transitionCallbacks.add(fn);\n }\n });\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { useCallback, useEffect, useRef } from 'react';\n\ninterface GlobalListeners {\n addGlobalListener<K extends keyof DocumentEventMap>(\n el: EventTarget,\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n addGlobalListener(\n el: EventTarget,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void;\n removeGlobalListener<K extends keyof DocumentEventMap>(\n el: EventTarget,\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n removeGlobalListener(\n el: EventTarget,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void;\n removeAllGlobalListeners(): void;\n}\n\nexport function useGlobalListeners(): GlobalListeners {\n let globalListeners = useRef(new Map());\n let addGlobalListener = useCallback((eventTarget, type, listener, options) => {\n // Make sure we remove the listener after it is called with the `once` option.\n let fn = options?.once\n ? (...args) => {\n globalListeners.current.delete(listener);\n listener(...args);\n }\n : listener;\n globalListeners.current.set(listener, { type, eventTarget, fn, options });\n eventTarget.addEventListener(type, listener, options);\n }, []);\n let removeGlobalListener = useCallback((eventTarget, type, listener, options) => {\n let fn = globalListeners.current.get(listener)?.fn || listener;\n eventTarget.removeEventListener(type, fn, options);\n globalListeners.current.delete(listener);\n }, []);\n let removeAllGlobalListeners = useCallback(() => {\n globalListeners.current.forEach((value, key) => {\n removeGlobalListener(value.eventTarget, value.type, key, value.options);\n });\n }, [removeGlobalListener]);\n\n // eslint-disable-next-line arrow-body-style\n useEffect(() => {\n return removeAllGlobalListeners;\n }, [removeAllGlobalListeners]);\n\n return { addGlobalListener, removeGlobalListener, removeAllGlobalListeners };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { AriaLabelingProps, DOMProps } from '../../react-types/shared';\nimport { useId } from './useId';\n\n/**\n * Merges aria-label and aria-labelledby into aria-labelledby when both exist.\n * @param props - Aria label props.\n * @param defaultLabel - Default value for aria-label when not present.\n */\nexport function useLabels(props: DOMProps & AriaLabelingProps, defaultLabel?: string): DOMProps & AriaLabelingProps {\n let { id, 'aria-label': label, 'aria-labelledby': labelledBy } = props;\n\n // If there is both an aria-label and aria-labelledby,\n // combine them by pointing to the element itself.\n id = useId(id);\n if (labelledBy && label) {\n let ids = new Set([id, ...labelledBy.trim().split(/\\s+/)]);\n labelledBy = [...ids].join(' ');\n } else if (labelledBy) {\n labelledBy = labelledBy.trim().split(/\\s+/).join(' ');\n }\n\n // If no labels are provided, use the default\n if (!label && !labelledBy && defaultLabel) {\n label = defaultLabel;\n }\n\n return {\n id,\n 'aria-label': label,\n 'aria-labelledby': labelledBy,\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 */\n\nimport {MutableRefObject, RefObject} from 'react';\nimport {useLayoutEffect} from './';\n\ninterface ContextValue<T> {\n ref?: MutableRefObject<T | null>\n}\n\n// Syncs ref from context with ref passed to hook\nexport function useSyncRef<T>(context?: ContextValue<T> | null, ref?: RefObject<T>) {\n useLayoutEffect(() => {\n if (context && context.ref && ref) {\n context.ref.current = ref.current;\n return () => {\n if (context.ref) {\n context.ref.current = null;\n }\n };\n }\n });\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2021 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 */\n\nimport { RefObject, useEffect } from 'react';\nimport { useEffectEvent } from './useEffectEvent';\n\nexport function useEvent<K extends keyof GlobalEventHandlersEventMap>(\n ref: RefObject<EventTarget>,\n event: K | (string & {}),\n handler?: (this: Document, ev: GlobalEventHandlersEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n) {\n let handleEvent = useEffectEvent(handler);\n let isDisabled = handler == null;\n\n useEffect(() => {\n if (isDisabled || !ref.current) {\n return;\n }\n\n let element = ref.current;\n element.addEventListener(event, handleEvent as EventListener, options);\n return () => {\n element.removeEventListener(event, handleEvent as EventListener, options);\n };\n }, [ref, event, options, isDisabled, handleEvent]);\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { Dispatch, MutableRefObject, useRef, useState } from 'react';\nimport { useEffectEvent, useLayoutEffect } from './';\n\ntype SetValueAction<S> = (prev: S) => Generator<any, void, unknown>;\n\n// This hook works like `useState`, but when setting the value, you pass a generator function\n// that can yield multiple values. Each yielded value updates the state and waits for the next\n// layout effect, then continues the generator. This allows sequential updates to state to be\n// written linearly.\nexport function useValueEffect<S>(defaultValue: S | (() => S)): [S, Dispatch<SetValueAction<S>>] {\n let [value, setValue] = useState(defaultValue);\n let effect: MutableRefObject<Generator<S> | null> = useRef<Generator<S> | null>(null);\n\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 = useEffectEvent(() => {\n if (!effect.current) {\n return;\n }\n // Run the generator to the next yield.\n let newValue = effect.current.next();\n\n // If the generator is done, reset the effect.\n if (newValue.done) {\n effect.current = null;\n return;\n }\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) {\n nextRef();\n } else {\n setValue(newValue.value);\n }\n });\n\n useLayoutEffect(() => {\n // If there is an effect currently running, continue to the next yield.\n if (effect.current) {\n nextRef();\n }\n });\n\n let queue = useEffectEvent((fn) => {\n effect.current = fn(value);\n nextRef();\n });\n\n return [value, queue];\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nexport function useControlledState<T, C = T>(\n value: Exclude<T, undefined>,\n defaultValue: Exclude<T, undefined> | undefined,\n onChange?: (v: C, ...args: any[]) => void\n): [T, (value: T) => void];\nexport function useControlledState<T, C = T>(\n value: Exclude<T, undefined> | undefined,\n defaultValue: Exclude<T, undefined>,\n onChange?: (v: C, ...args: any[]) => void\n): [T, (value: T) => void];\nexport function useControlledState<T, C = T>(\n value: T,\n defaultValue: T,\n onChange?: (v: C, ...args: any[]) => void\n): [T, (value: T) => void] {\n let [stateValue, setStateValue] = useState(value || defaultValue);\n\n let isControlledRef = useRef(value !== undefined);\n let isControlled = value !== undefined;\n useEffect(() => {\n let wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n console.warn(\n `WARN: A component changed from ${wasControlled ? 'controlled' : 'uncontrolled'} to ${\n isControlled ? 'controlled' : 'uncontrolled'\n }.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled]);\n\n let currentValue = isControlled ? value : stateValue;\n let setValue = useCallback(\n (value, ...args) => {\n let onChangeCaller = (value, ...onChangeArgs) => {\n if (onChange) {\n if (!Object.is(currentValue, value)) {\n onChange(value, ...onChangeArgs);\n }\n }\n if (!isControlled) {\n // If uncontrolled, mutate the currentValue local variable so that\n // calling setState multiple times with the same value only emits onChange once.\n // We do not use a ref for this because we specifically _do_ want the value to\n // reset every render, and assigning to a ref in render breaks aborted suspended renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n currentValue = value;\n }\n };\n\n if (typeof value === 'function') {\n console.warn(\n 'We can not support a function callback. See Github Issues for details https://github.com/adobe/react-spectrum/issues/2320'\n );\n // this supports functional updates https://reactjs.org/docs/hooks-reference.html#functional-updates\n // when someone using useControlledState calls setControlledState(myFunc)\n // this will call our useState setState with a function as well which invokes myFunc and calls onChange with the value from myFunc\n // if we're in an uncontrolled state, then we also return the value of myFunc which to setState looks as though it was just called with myFunc from the beginning\n // otherwise we just return the controlled value, which won't cause a rerender because React knows to bail out when the value is the same\n let updateFunction = (oldValue, ...functionArgs) => {\n let interceptedValue = value(isControlled ? currentValue : oldValue, ...functionArgs);\n onChangeCaller(interceptedValue, ...args);\n if (!isControlled) {\n return interceptedValue;\n }\n return oldValue;\n };\n setStateValue(updateFunction);\n } else {\n if (!isControlled) {\n setStateValue(value);\n }\n onChangeCaller(value, ...args);\n }\n },\n [isControlled, currentValue, onChange]\n );\n\n return [currentValue, setValue];\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\n/**\n * Takes a value and forces it to the closest min/max if it's outside. Also forces it to the closest valid step.\n */\nexport function clamp(value: number, min: number = -Infinity, max: number = Infinity): number {\n let newValue = Math.min(Math.max(value, min), max);\n return newValue;\n}\n\nexport function roundToStepPrecision(value: number, step: number) {\n let roundedValue = value;\n let stepString = step.toString();\n let pointIndex = stepString.indexOf('.');\n let precision = pointIndex >= 0 ? stepString.length - pointIndex : 0;\n if (precision > 0) {\n let pow = Math.pow(10, precision);\n roundedValue = Math.round(roundedValue * pow) / pow;\n }\n return roundedValue;\n}\n\nexport function snapValueToStep(value: number, min: number | undefined, max: number | undefined, step: number): number {\n min = Number(min);\n max = Number(max);\n let remainder = (value - (isNaN(min) ? 0 : min)) % step;\n let snappedValue = roundToStepPrecision(\n Math.abs(remainder) * 2 >= step ? value + Math.sign(remainder) * (step - Math.abs(remainder)) : value - remainder,\n step\n );\n\n if (!isNaN(min)) {\n if (snappedValue < min) {\n snappedValue = min;\n } else if (!isNaN(max) && snappedValue > max) {\n snappedValue = min + Math.floor(roundToStepPrecision((max - min) / step, step)) * step;\n }\n } else if (!isNaN(max) && snappedValue > max) {\n snappedValue = Math.floor(roundToStepPrecision(max / step, step)) * step;\n }\n\n // correct floating point behavior by rounding to step precision\n snappedValue = roundToStepPrecision(snappedValue, step);\n\n return snappedValue;\n}\n\n/* Takes a value and rounds off to the number of digits. */\nexport function toFixedNumber(value: number, digits: number, base: number = 10): number {\n const pow = Math.pow(base, digits);\n\n return Math.round(value * pow) / pow;\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2023 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 */\nimport { RefObject, useEffect, useRef } from 'react';\nimport { useEffectEvent } from './useEffectEvent';\n\nexport function useFormReset<T>(\n ref: RefObject<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>,\n initialValue: T,\n onReset: (value: T) => void\n) {\n let resetValue = useRef(initialValue);\n let handleReset = useEffectEvent(() => {\n if (onReset) {\n onReset(resetValue.current);\n }\n });\n\n useEffect(() => {\n let form = ref?.current?.form;\n form?.addEventListener('reset', handleReset);\n return () => {\n form?.removeEventListener('reset', handleReset);\n };\n }, [ref, handleReset]);\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { NumberFormatter } from './NumberFormatter';\n\ninterface Symbols {\n minusSign?: string;\n plusSign?: string;\n decimal?: string;\n group?: string;\n literals: RegExp;\n numeral: RegExp;\n index: (v: string) => string;\n}\n\nconst CURRENCY_SIGN_REGEX = new RegExp('^.*\\\\(.*\\\\).*$');\nconst NUMBERING_SYSTEMS = ['latn', 'arab', 'hanidec'];\n\n/**\n * A NumberParser can be used to perform locale-aware parsing of numbers from Unicode strings,\n * as well as validation of partial user input. It automatically detects the numbering system\n * used in the input, and supports parsing decimals, percentages, currency values, and units\n * according to the locale.\n */\nexport class NumberParser {\n private locale: string;\n private options: Intl.NumberFormatOptions;\n\n constructor(locale: string, options: Intl.NumberFormatOptions = {}) {\n this.locale = locale;\n this.options = options;\n }\n\n /**\n * Parses the given string to a number. Returns NaN if a valid number could not be parsed.\n */\n parse(value: string): number {\n return getNumberParserImpl(this.locale, this.options, value).parse(value);\n }\n\n /**\n * Returns whether the given string could potentially be a valid number. This should be used to\n * validate user input as the user types. If a `minValue` or `maxValue` is provided, the validity\n * of the minus/plus sign characters can be checked.\n */\n isValidPartialNumber(value: string, minValue?: number, maxValue?: number): boolean {\n return getNumberParserImpl(this.locale, this.options, value).isValidPartialNumber(value, minValue, maxValue);\n }\n\n /**\n * Returns a numbering system for which the given string is valid in the current locale.\n * If no numbering system could be detected, the default numbering system for the current\n * locale is returned.\n */\n getNumberingSystem(value: string): string {\n return getNumberParserImpl(this.locale, this.options, value).options.numberingSystem;\n }\n}\n\nconst numberParserCache = new Map<string, NumberParserImpl>();\nfunction getNumberParserImpl(locale: string, options: Intl.NumberFormatOptions, value: string) {\n // First try the default numbering system for the provided locale\n let defaultParser = getCachedNumberParser(locale, options);\n\n // If that doesn't match, and the locale doesn't include a hard coded numbering system,\n // try each of the other supported numbering systems until we find one that matches.\n if (!locale.includes('-nu-') && !defaultParser.isValidPartialNumber(value)) {\n for (let numberingSystem of NUMBERING_SYSTEMS) {\n if (numberingSystem !== defaultParser.options.numberingSystem) {\n let parser = getCachedNumberParser(\n locale + (locale.includes('-u-') ? '-nu-' : '-u-nu-') + numberingSystem,\n options\n );\n if (parser.isValidPartialNumber(value)) {\n return parser;\n }\n }\n }\n }\n\n return defaultParser;\n}\n\nfunction getCachedNumberParser(locale: string, options: Intl.NumberFormatOptions) {\n let cacheKey =\n locale +\n (options\n ? Object.entries(options)\n .sort((a, b) => (a[0] < b[0] ? -1 : 1))\n .join()\n : '');\n let parser = numberParserCache.get(cacheKey);\n if (!parser) {\n parser = new NumberParserImpl(locale, options);\n numberParserCache.set(cacheKey, parser);\n }\n\n return parser;\n}\n\n// The actual number parser implementation. Instances of this class are cached\n// based on the locale, options, and detected numbering system.\nclass NumberParserImpl {\n formatter: Intl.NumberFormat;\n options: Intl.ResolvedNumberFormatOptions;\n symbols: Symbols;\n locale: string;\n\n constructor(locale: string, options: Intl.NumberFormatOptions = {}) {\n this.locale = locale;\n this.formatter = new Intl.NumberFormat(locale, options);\n this.options = this.formatter.resolvedOptions();\n this.symbols = getSymbols(locale, this.formatter, this.options, options);\n if (\n this.options.style === 'percent' &&\n ((this.options.minimumFractionDigits ?? 0) > 18 || (this.options.maximumFractionDigits ?? 0) > 18)\n ) {\n console.warn(\n 'NumberParser cannot handle percentages with greater than 18 decimal places, please reduce the number in your options.'\n );\n }\n }\n\n parse(value: string) {\n // to parse the number, we need to remove anything that isn't actually part of the number, for example we want '-10.40' not '-10.40 USD'\n let fullySanitizedValue = this.sanitize(value);\n\n if (this.symbols.group) {\n // Remove group characters, and replace decimal points and numerals with ASCII values.\n fullySanitizedValue = replaceAll(fullySanitizedValue, this.symbols.group, '');\n }\n if (this.symbols.decimal) {\n fullySanitizedValue = fullySanitizedValue.replace(this.symbols.decimal!, '.');\n }\n if (this.symbols.minusSign) {\n fullySanitizedValue = fullySanitizedValue.replace(this.symbols.minusSign!, '-');\n }\n fullySanitizedValue = fullySanitizedValue.replace(this.symbols.numeral, this.symbols.index);\n\n if (this.options.style === 'percent') {\n // javascript is bad at dividing by 100 and maintaining the same significant figures, so perform it on the string before parsing\n let isNegative = fullySanitizedValue.indexOf('-');\n fullySanitizedValue = fullySanitizedValue.replace('-', '');\n let index = fullySanitizedValue.indexOf('.');\n if (index === -1) {\n index = fullySanitizedValue.length;\n }\n fullySanitizedValue = fullySanitizedValue.replace('.', '');\n if (index - 2 === 0) {\n fullySanitizedValue = `0.${fullySanitizedValue}`;\n } else if (index - 2 === -1) {\n fullySanitizedValue = `0.0${fullySanitizedValue}`;\n } else if (index - 2 === -2) {\n fullySanitizedValue = '0.00';\n } else {\n fullySanitizedValue = `${fullySanitizedValue.slice(0, index - 2)}.${fullySanitizedValue.slice(index - 2)}`;\n }\n if (isNegative > -1) {\n fullySanitizedValue = `-${fullySanitizedValue}`;\n }\n }\n\n let newValue = fullySanitizedValue ? +fullySanitizedValue : NaN;\n if (isNaN(newValue)) {\n return NaN;\n }\n\n if (this.options.style === 'percent') {\n // extra step for rounding percents to what our formatter would output\n let options = {\n ...this.options,\n style: 'decimal' as const,\n minimumFractionDigits: Math.min((this.options.minimumFractionDigits ?? 0) + 2, 20),\n maximumFractionDigits: Math.min((this.options.maximumFractionDigits ?? 0) + 2, 20),\n };\n return new NumberParser(this.locale, options).parse(new NumberFormatter(this.locale, options).format(newValue));\n }\n\n // accounting will always be stripped to a positive number, so if it's accounting and has a () around everything, then we need to make it negative again\n if (this.options.currencySign === 'accounting' && CURRENCY_SIGN_REGEX.test(value)) {\n newValue = -1 * newValue;\n }\n\n return newValue;\n }\n\n sanitize(value: string) {\n // Remove literals and whitespace, which are allowed anywhere in the string\n value = value.replace(this.symbols.literals, '');\n\n // Replace the ASCII minus sign with the minus sign used in the current locale\n // so that both are allowed in case the user's keyboard doesn't have the locale's minus sign.\n if (this.symbols.minusSign) {\n value = value.replace('-', this.symbols.minusSign);\n }\n\n // In arab numeral system, their decimal character is 1643, but most keyboards don't type that\n // instead they use the , (44) character or apparently the (1548) character.\n if (this.options.numberingSystem === 'arab') {\n if (this.symbols.decimal) {\n value = value.replace(',', this.symbols.decimal);\n value = value.replace(String.fromCharCode(1548), this.symbols.decimal);\n }\n if (this.symbols.group) {\n value = replaceAll(value, '.', this.symbols.group);\n }\n }\n\n // fr-FR group character is char code 8239, but that's not a key on the french keyboard,\n // so allow 'period' as a group char and replace it with a space\n if (this.options.locale === 'fr-FR') {\n value = replaceAll(value, '.', String.fromCharCode(8239));\n }\n\n return value;\n }\n\n isValidPartialNumber(value: string, minValue: number = -Infinity, maxValue: number = Infinity): boolean {\n value = this.sanitize(value);\n\n // Remove minus or plus sign, which must be at the start of the string.\n if (this.symbols.minusSign && value.startsWith(this.symbols.minusSign) && minValue < 0) {\n value = value.slice(this.symbols.minusSign.length);\n } else if (this.symbols.plusSign && value.startsWith(this.symbols.plusSign) && maxValue > 0) {\n value = value.slice(this.symbols.plusSign.length);\n }\n\n // Numbers cannot start with a group separator\n if (this.symbols.group && value.startsWith(this.symbols.group)) {\n return false;\n }\n\n // Numbers that can't have any decimal values fail if a decimal character is typed\n if (this.symbols.decimal && value.indexOf(this.symbols.decimal) > -1 && this.options.maximumFractionDigits === 0) {\n return false;\n }\n\n // Remove numerals, groups, and decimals\n if (this.symbols.group) {\n value = replaceAll(value, this.symbols.group, '');\n }\n value = value.replace(this.symbols.numeral, '');\n if (this.symbols.decimal) {\n value = value.replace(this.symbols.decimal, '');\n }\n\n // The number is valid if there are no remaining characters\n return value.length === 0;\n }\n}\n\nconst nonLiteralParts = new Set(['decimal', 'fraction', 'integer', 'minusSign', 'plusSign', 'group']);\n\n// This list is derived from https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html#comparison and includes\n// all unique numbers which we need to check in order to determine all the plural forms for a given locale.\n// See: https://github.com/adobe/react-spectrum/pull/5134/files#r1337037855 for used script\nconst pluralNumbers = [0, 4, 2, 1, 11, 20, 3, 7, 100, 21, 0.1, 1.1];\n\nfunction getSymbols(\n locale: string,\n formatter: Intl.NumberFormat,\n intlOptions: Intl.ResolvedNumberFormatOptions,\n originalOptions: Intl.NumberFormatOptions\n): Symbols {\n // formatter needs access to all decimal places in order to generate the correct literal strings for the plural set\n let symbolFormatter = new Intl.NumberFormat(locale, {\n ...intlOptions,\n minimumSignificantDigits: 1,\n maximumSignificantDigits: 21,\n });\n // Note: some locale's don't add a group symbol until there is a ten thousands place\n let allParts = symbolFormatter.formatToParts(-10000.111);\n let posAllParts = symbolFormatter.formatToParts(10000.111);\n let pluralParts = pluralNumbers.map((n) => symbolFormatter.formatToParts(n));\n\n let minusSign = allParts.find((p) => p.type === 'minusSign')?.value ?? '-';\n let plusSign = posAllParts.find((p) => p.type === 'plusSign')?.value;\n\n // Safari does not support the signDisplay option, but our number parser polyfills it.\n // If no plus sign was returned, but the original options contained signDisplay, default to the '+' character.\n // @ts-ignore\n if (!plusSign && (originalOptions?.signDisplay === 'exceptZero' || originalOptions?.signDisplay === 'always')) {\n plusSign = '+';\n }\n\n // If maximumSignificantDigits is 1 (the minimum) then we won't get decimal characters out of the above formatters\n // Percent also defaults to 0 fractionDigits, so we need to make a new one that isn't percent to get an accurate decimal\n let decimalParts = new Intl.NumberFormat(locale, {\n ...intlOptions,\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).formatToParts(0.001);\n\n let decimal = decimalParts.find((p) => p.type === 'decimal')?.value;\n let group = allParts.find((p) => p.type === 'group')?.value;\n\n // this set is also for a regex, it's all literals that might be in the string we want to eventually parse that\n // don't contribute to the numerical value\n let allPartsLiterals = allParts.filter((p) => !nonLiteralParts.has(p.type)).map((p) => escapeRegex(p.value));\n let pluralPartsLiterals = pluralParts.flatMap((p) =>\n p.filter((p) => !nonLiteralParts.has(p.type)).map((p) => escapeRegex(p.value))\n );\n let sortedLiterals = [...new Set([...allPartsLiterals, ...pluralPartsLiterals])].sort((a, b) => b.length - a.length);\n\n let literals =\n sortedLiterals.length === 0\n ? new RegExp('[\\\\p{White_Space}]', 'gu')\n : new RegExp(`${sortedLiterals.join('|')}|[\\\\p{White_Space}]`, 'gu');\n\n // These are for replacing non-latn characters with the latn equivalent\n let numerals = [...new Intl.NumberFormat(intlOptions.locale, { useGrouping: false }).format(9876543210)].reverse();\n let indexes = new Map(numerals.map((d, i) => [d, i]));\n let numeral = new RegExp(`[${numerals.join('')}]`, 'g');\n let index = (d) => String(indexes.get(d));\n\n return { minusSign, plusSign, decimal, group, literals, numeral, index };\n}\n\nfunction replaceAll(str: string, find: string, replace: string) {\n // @ts-ignore\n if (str.replaceAll) {\n // @ts-ignore\n return str.replaceAll(find, replace);\n }\n\n return str.split(find).join(replace);\n}\n\nfunction escapeRegex(string: string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { getOwnerDocument, isIOS, runAfterTransition } from '../utils';\n\n// Safari on iOS starts selecting text on long press. The only way to avoid this, it seems,\n// is to add user-select: none to the entire page. Adding it to the pressable element prevents\n// that element from being selected, but nearby elements may still receive selection. We add\n// user-select: none on touch start, and remove it again on touch end to prevent this.\n// This must be implemented using global state to avoid race conditions between multiple elements.\n\n// There are three possible states due to the delay before removing user-select: none after\n// pointer up. The 'default' state always transitions to the 'disabled' state, which transitions\n// to 'restoring'. The 'restoring' state can either transition back to 'disabled' or 'default'.\n\n// For non-iOS devices, we apply user-select: none to the pressed element instead to avoid possible\n// performance issues that arise from applying and removing user-select: none to the entire page\n// (see https://github.com/adobe/react-spectrum/issues/1609).\ntype State = 'default' | 'disabled' | 'restoring';\n\n// Note that state only matters here for iOS. Non-iOS gets user-select: none applied to the target element\n// rather than at the document level so we just need to apply/remove user-select: none for each pressed element individually\nlet state: State = 'default';\nlet savedUserSelect = '';\nlet modifiedElementMap = new WeakMap<Element, string>();\n\nexport function disableTextSelection(target?: Element) {\n if (isIOS()) {\n if (state === 'default') {\n // eslint-disable-next-line no-restricted-globals\n const documentObject = getOwnerDocument(target);\n savedUserSelect = documentObject.documentElement.style.webkitUserSelect;\n documentObject.documentElement.style.webkitUserSelect = 'none';\n }\n\n state = 'disabled';\n } else if (target instanceof HTMLElement || target instanceof SVGElement) {\n // If not iOS, store the target's original user-select and change to user-select: none\n // Ignore state since it doesn't apply for non iOS\n modifiedElementMap.set(target, target.style.userSelect);\n target.style.userSelect = 'none';\n }\n}\n\nexport function restoreTextSelection(target?: Element) {\n if (isIOS()) {\n // If the state is already default, there's nothing to do.\n // If it is restoring, then there's no need to queue a second restore.\n if (state !== 'disabled') {\n return;\n }\n\n state = 'restoring';\n\n // There appears to be a delay on iOS where selection still might occur\n // after pointer up, so wait a bit before removing user-select.\n setTimeout(() => {\n // Wait for any CSS transitions to complete so we don't recompute style\n // for the whole page in the middle of the animation and cause jank.\n runAfterTransition(() => {\n // Avoid race conditions\n if (state === 'restoring') {\n // eslint-disable-next-line no-restricted-globals\n const documentObject = getOwnerDocument(target);\n if (documentObject.documentElement.style.webkitUserSelect === 'none') {\n documentObject.documentElement.style.webkitUserSelect = savedUserSelect || '';\n }\n\n savedUserSelect = '';\n state = 'default';\n }\n });\n }, 300);\n } else if (target instanceof HTMLElement || target instanceof SVGElement) {\n // If not iOS, restore the target's original user-select if any\n // Ignore state since it doesn't apply for non iOS\n if (target && modifiedElementMap.has(target)) {\n let targetOldUserSelect = modifiedElementMap.get(target) as string;\n\n if (target.style.userSelect === 'none') {\n target.style.userSelect = targetOldUserSelect;\n }\n\n if (target.getAttribute('style') === '') {\n target.removeAttribute('style');\n }\n modifiedElementMap.delete(target);\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 */\n\nimport { FocusableElement } from '../../react-types/shared';\nimport { PressProps } from './usePress';\nimport React, { MutableRefObject } from 'react';\n\ninterface IPressResponderContext extends PressProps {\n register(): void;\n ref?: MutableRefObject<FocusableElement>;\n}\n\nexport const PressResponderContext = React.createContext<IPressResponderContext>({ register: () => {} });\nPressResponderContext.displayName = 'PressResponderContext';\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {\n chain,\n focusWithoutScrolling,\n getOwnerDocument,\n getOwnerWindow,\n isMac,\n isVirtualClick,\n isVirtualPointerEvent,\n mergeProps,\n openLink,\n useEffectEvent,\n useGlobalListeners,\n useSyncRef,\n} from '../utils';\nimport { disableTextSelection, restoreTextSelection } from './textSelection';\nimport {\n DOMAttributes,\n FocusableElement,\n PressEvent as IPressEvent,\n PointerType,\n PressEvents,\n} from '../../react-types/shared';\nimport { PressResponderContext } from './context';\nimport { RefObject, TouchEvent as RTouchEvent, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nexport interface PressProps extends PressEvents {\n /** Whether the target is in a controlled press state (e.g. an overlay it triggers is open). */\n isPressed?: boolean;\n /** Whether the press events should be disabled. */\n isDisabled?: boolean;\n /** Whether the target should not receive focus on press. */\n preventFocusOnPress?: boolean;\n /**\n * Whether press events should be canceled when the pointer leaves the target while pressed.\n * By default, this is `false`, which means if the pointer returns back over the target while\n * still pressed, onPressStart will be fired again. If set to `true`, the press is canceled\n * when the pointer leaves the target and onPressStart will not be fired if the pointer returns.\n */\n shouldCancelOnPointerExit?: boolean;\n /** Whether text selection should be enabled on the pressable element. */\n allowTextSelectionOnPress?: boolean;\n}\n\nexport interface PressHookProps extends PressProps {\n /** A ref to the target element. */\n ref?: RefObject<Element>;\n}\n\ninterface PressState {\n isPressed: boolean;\n ignoreEmulatedMouseEvents: boolean;\n ignoreClickAfterPress: boolean;\n didFirePressStart: boolean;\n isTriggeringEvent: boolean;\n activePointerId: any;\n target: FocusableElement | null;\n isOverTarget: boolean;\n pointerType: PointerType | null;\n userSelect?: string;\n metaKeyEvents?: Map<string, KeyboardEvent>;\n}\n\ninterface EventBase {\n currentTarget: EventTarget | null;\n shiftKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n altKey: boolean;\n clientX?: number;\n clientY?: number;\n targetTouches?: Array<{ clientX?: number; clientY?: number }>;\n}\n\nexport interface PressResult {\n /** Whether the target is currently pressed. */\n isPressed: boolean;\n /** Props to spread on the target element. */\n pressProps: DOMAttributes;\n}\n\nfunction usePressResponderContext(props: PressHookProps): PressHookProps {\n // Consume context from <PressResponder> and merge with props.\n let context = useContext(PressResponderContext);\n if (context) {\n let { register, ...contextProps } = context;\n props = mergeProps(contextProps, props) as PressHookProps;\n register();\n }\n useSyncRef(context, props.ref);\n\n return props;\n}\n\nclass PressEvent implements IPressEvent {\n type: IPressEvent['type'];\n pointerType: PointerType;\n target: Element;\n shiftKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n altKey: boolean;\n x: number;\n y: number;\n #shouldStopPropagation = true;\n\n constructor(type: IPressEvent['type'], pointerType: PointerType, originalEvent: EventBase, state?: PressState) {\n let currentTarget = state?.target ?? originalEvent.currentTarget;\n const rect: DOMRect | undefined = (currentTarget as Element)?.getBoundingClientRect();\n let x,\n y = 0;\n let clientX,\n clientY: number | null = null;\n if (originalEvent.clientX != null && originalEvent.clientY != null) {\n clientX = originalEvent.clientX;\n clientY = originalEvent.clientY;\n }\n if (rect) {\n if (clientX != null && clientY != null) {\n x = clientX - rect.left;\n y = clientY - rect.top;\n } else {\n x = rect.width / 2;\n y = rect.height / 2;\n }\n }\n this.type = type;\n this.pointerType = pointerType;\n this.target = originalEvent.currentTarget as Element;\n this.shiftKey = originalEvent.shiftKey;\n this.metaKey = originalEvent.metaKey;\n this.ctrlKey = originalEvent.ctrlKey;\n this.altKey = originalEvent.altKey;\n this.x = x;\n this.y = y;\n }\n\n continuePropagation() {\n this.#shouldStopPropagation = false;\n }\n\n get shouldStopPropagation() {\n return this.#shouldStopPropagation;\n }\n}\n\nconst LINK_CLICKED = Symbol('linkClicked');\n\n/**\n * Handles press interactions across mouse, touch, keyboard, and screen readers.\n * It normalizes behavior across browsers and platforms, and handles many nuances\n * of dealing with pointer and keyboard events.\n */\nexport function usePress(props: PressHookProps): PressResult {\n let {\n onPress,\n onPressChange,\n onPressStart,\n onPressEnd,\n onPressUp,\n isDisabled,\n isPressed: isPressedProp,\n preventFocusOnPress,\n shouldCancelOnPointerExit,\n allowTextSelectionOnPress,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ref: _, // Removing `ref` from `domProps` because TypeScript is dumb\n ...domProps\n } = usePressResponderContext(props);\n\n let [isPressed, setPressed] = useState(false);\n let ref = useRef<PressState>({\n isPressed: false,\n ignoreEmulatedMouseEvents: false,\n ignoreClickAfterPress: false,\n didFirePressStart: false,\n isTriggeringEvent: false,\n activePointerId: null,\n target: null,\n isOverTarget: false,\n pointerType: null,\n });\n\n let { addGlobalListener, removeAllGlobalListeners } = useGlobalListeners();\n\n let triggerPressStart = useEffectEvent((originalEvent: EventBase, pointerType: PointerType) => {\n let state = ref.current;\n if (isDisabled || state.didFirePressStart) {\n return false;\n }\n\n let shouldStopPropagation = true;\n state.isTriggeringEvent = true;\n if (onPressStart) {\n let event = new PressEvent('pressstart', pointerType, originalEvent);\n onPressStart(event);\n shouldStopPropagation = event.shouldStopPropagation;\n }\n\n if (onPressChange) {\n onPressChange(true);\n }\n\n state.isTriggeringEvent = false;\n state.didFirePressStart = true;\n setPressed(true);\n return shouldStopPropagation;\n });\n\n let triggerPressEnd = useEffectEvent((originalEvent: EventBase, pointerType: PointerType, wasPressed = true) => {\n let state = ref.current;\n if (!state.didFirePressStart) {\n return false;\n }\n\n state.ignoreClickAfterPress = true;\n state.didFirePressStart = false;\n state.isTriggeringEvent = true;\n\n let shouldStopPropagation = true;\n if (onPressEnd) {\n let event = new PressEvent('pressend', pointerType, originalEvent);\n onPressEnd(event);\n shouldStopPropagation = event.shouldStopPropagation;\n }\n\n if (onPressChange) {\n onPressChange(false);\n }\n\n setPressed(false);\n\n if (onPress && wasPressed && !isDisabled) {\n let event = new PressEvent('press', pointerType, originalEvent);\n onPress(event);\n shouldStopPropagation &&= event.shouldStopPropagation;\n }\n\n state.isTriggeringEvent = false;\n return shouldStopPropagation;\n });\n\n let triggerPressUp = useEffectEvent((originalEvent: EventBase, pointerType: PointerType) => {\n let state = ref.current;\n if (isDisabled) {\n return false;\n }\n\n if (onPressUp) {\n state.isTriggeringEvent = true;\n let event = new PressEvent('pressup', pointerType, originalEvent);\n onPressUp(event);\n state.isTriggeringEvent = false;\n return event.shouldStopPropagation;\n }\n\n return true;\n });\n\n let cancel = useEffectEvent((e: EventBase) => {\n let state = ref.current;\n if (state.isPressed && state.target) {\n if (state.isOverTarget && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n }\n state.isPressed = false;\n state.isOverTarget = false;\n state.activePointerId = null;\n state.pointerType = null;\n removeAllGlobalListeners();\n if (!allowTextSelectionOnPress) {\n restoreTextSelection(state.target);\n }\n }\n });\n\n let cancelOnPointerExit = useEffectEvent((e: EventBase) => {\n if (shouldCancelOnPointerExit) {\n cancel(e);\n }\n });\n\n let pressProps = useMemo(() => {\n let state = ref.current;\n let pressProps: DOMAttributes = {\n onKeyDown(e) {\n if (isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && e.currentTarget.contains(e.target as Element)) {\n if (shouldPreventDefaultKeyboard(e.target as Element, e.key)) {\n e.preventDefault();\n }\n\n // If the event is repeating, it may have started on a different element\n // after which focus moved to the current element. Ignore these events and\n // only handle the first key down event.\n let shouldStopPropagation = true;\n if (!state.isPressed && !e.repeat) {\n state.target = e.currentTarget;\n state.isPressed = true;\n shouldStopPropagation = triggerPressStart(e, 'keyboard');\n\n // Focus may move before the key up event, so register the event on the document\n // instead of the same element where the key down event occurred. Make it capturing so that it will trigger\n // before stopPropagation from useKeyboard on a child element may happen and thus we can still call triggerPress for the parent element.\n let originalTarget = e.currentTarget;\n let pressUp = (e) => {\n if (\n isValidKeyboardEvent(e, originalTarget) &&\n !e.repeat &&\n originalTarget.contains(e.target as Element) &&\n state.target\n ) {\n triggerPressUp(createEvent(state.target, e), 'keyboard');\n }\n };\n\n addGlobalListener(getOwnerDocument(e.currentTarget), 'keyup', chain(pressUp, onKeyUp), true);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n // Keep track of the keydown events that occur while the Meta (e.g. Command) key is held.\n // macOS has a bug where keyup events are not fired while the Meta key is down.\n // When the Meta key itself is released we will get an event for that, and we'll act as if\n // all of these other keys were released as well.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1393524\n // https://bugs.webkit.org/show_bug.cgi?id=55291\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1299553\n if (e.metaKey && isMac()) {\n state.metaKeyEvents?.set(e.key, e.nativeEvent);\n }\n } else if (e.key === 'Meta') {\n state.metaKeyEvents = new Map();\n }\n },\n onClick(e) {\n if (e && !e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (e && e.button === 0 && !state.isTriggeringEvent && !(openLink as any).isOpening) {\n let shouldStopPropagation = true;\n if (isDisabled) {\n e.preventDefault();\n }\n\n // If triggered from a screen reader or by using element.click(),\n // trigger as if it were a keyboard click.\n if (\n !state.ignoreClickAfterPress &&\n !state.ignoreEmulatedMouseEvents &&\n !state.isPressed &&\n (state.pointerType === 'virtual' || isVirtualClick(e.nativeEvent))\n ) {\n // Ensure the element receives focus (VoiceOver on iOS does not do this)\n if (!isDisabled && !preventFocusOnPress) {\n focusWithoutScrolling(e.currentTarget);\n }\n\n let stopPressStart = triggerPressStart(e, 'virtual');\n let stopPressUp = triggerPressUp(e, 'virtual');\n let stopPressEnd = triggerPressEnd(e, 'virtual');\n shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;\n }\n\n state.ignoreEmulatedMouseEvents = false;\n state.ignoreClickAfterPress = false;\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n }\n },\n };\n\n let onKeyUp = (e: KeyboardEvent) => {\n if (state.isPressed && state.target && isValidKeyboardEvent(e, state.target)) {\n if (shouldPreventDefaultKeyboard(e.target as Element, e.key)) {\n e.preventDefault();\n }\n\n let target = e.target as Element;\n triggerPressEnd(createEvent(state.target, e), 'keyboard', state.target.contains(target));\n removeAllGlobalListeners();\n\n // If a link was triggered with a key other than Enter, open the URL ourselves.\n // This means the link has a role override, and the default browser behavior\n // only applies when using the Enter key.\n if (e.key !== 'Enter' && isHTMLAnchorLink(state.target) && state.target.contains(target) && !e[LINK_CLICKED]) {\n // Store a hidden property on the event so we only trigger link click once,\n // even if there are multiple usePress instances attached to the element.\n e[LINK_CLICKED] = true;\n openLink(state.target, e, false);\n }\n\n state.isPressed = false;\n state.metaKeyEvents?.delete(e.key);\n } else if (e.key === 'Meta' && state.metaKeyEvents?.size) {\n // If we recorded keydown events that occurred while the Meta key was pressed,\n // and those haven't received keyup events already, fire keyup events ourselves.\n // See comment above for more info about the macOS bug causing this.\n let events = state.metaKeyEvents;\n state.metaKeyEvents = undefined;\n for (let event of events.values()) {\n state.target?.dispatchEvent(new KeyboardEvent('keyup', event));\n }\n }\n };\n\n if (typeof PointerEvent !== 'undefined') {\n pressProps.onPointerDown = (e) => {\n // Only handle left clicks, and ignore events that bubbled through portals.\n if (e.button !== 0 || !e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n // iOS safari fires pointer events from VoiceOver with incorrect coordinates/target.\n // Ignore and let the onClick handler take care of it instead.\n // https://bugs.webkit.org/show_bug.cgi?id=222627\n // https://bugs.webkit.org/show_bug.cgi?id=223202\n if (isVirtualPointerEvent(e.nativeEvent)) {\n state.pointerType = 'virtual';\n return;\n }\n\n // Due to browser inconsistencies, especially on mobile browsers, we prevent\n // default on pointer down and handle focusing the pressable element ourselves.\n if (shouldPreventDefault(e.currentTarget as Element)) {\n e.preventDefault();\n }\n\n state.pointerType = e.pointerType;\n\n let shouldStopPropagation = true;\n if (!state.isPressed) {\n state.isPressed = true;\n state.isOverTarget = true;\n state.activePointerId = e.pointerId;\n state.target = e.currentTarget;\n\n if (!isDisabled && !preventFocusOnPress) {\n focusWithoutScrolling(e.currentTarget);\n }\n\n if (!allowTextSelectionOnPress) {\n disableTextSelection(state.target);\n }\n\n shouldStopPropagation = triggerPressStart(e, state.pointerType);\n\n addGlobalListener(getOwnerDocument(e.currentTarget), 'pointermove', onPointerMove, false);\n addGlobalListener(getOwnerDocument(e.currentTarget), 'pointerup', onPointerUp, false);\n addGlobalListener(getOwnerDocument(e.currentTarget), 'pointercancel', onPointerCancel, false);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n pressProps.onMouseDown = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (e.button === 0) {\n // Chrome and Firefox on touch Windows devices require mouse down events\n // to be canceled in addition to pointer events, or an extra asynchronous\n // focus event will be fired.\n if (shouldPreventDefault(e.currentTarget as Element)) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n }\n };\n\n pressProps.onPointerUp = (e) => {\n // iOS fires pointerup with zero width and height, so check the pointerType recorded during pointerdown.\n if (!e.currentTarget.contains(e.target as Element) || state.pointerType === 'virtual') {\n return;\n }\n\n // Only handle left clicks\n // Safari on iOS sometimes fires pointerup events, even\n // when the touch isn't over the target, so double check.\n if (e.button === 0 && isOverTarget(e, e.currentTarget)) {\n triggerPressUp(e, state.pointerType || e.pointerType);\n }\n };\n\n // Safari on iOS < 13.2 does not implement pointerenter/pointerleave events correctly.\n // Use pointer move events instead to implement our own hit testing.\n // See https://bugs.webkit.org/show_bug.cgi?id=199803\n let onPointerMove = (e: PointerEvent) => {\n if (e.pointerId !== state.activePointerId) {\n return;\n }\n\n if (state.target && isOverTarget(e, state.target)) {\n if (!state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = true;\n triggerPressStart(createEvent(state.target, e), state.pointerType);\n }\n } else if (state.target && state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = false;\n triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n cancelOnPointerExit(e);\n }\n };\n\n let onPointerUp = (e: PointerEvent) => {\n if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0 && state.target) {\n if (isOverTarget(e, state.target) && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType);\n } else if (state.isOverTarget && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n }\n\n state.isPressed = false;\n state.isOverTarget = false;\n state.activePointerId = null;\n state.pointerType = null;\n removeAllGlobalListeners();\n if (!allowTextSelectionOnPress) {\n restoreTextSelection(state.target);\n }\n }\n };\n\n let onPointerCancel = (e: PointerEvent) => {\n cancel(e);\n };\n\n pressProps.onDragStart = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n // Safari does not call onPointerCancel when a drag starts, whereas Chrome and Firefox do.\n cancel(e);\n };\n } else {\n pressProps.onMouseDown = (e) => {\n // Only handle left clicks\n if (e.button !== 0 || !e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n // Due to browser inconsistencies, especially on mobile browsers, we prevent\n // default on mouse down and handle focusing the pressable element ourselves.\n if (shouldPreventDefault(e.currentTarget)) {\n e.preventDefault();\n }\n\n if (state.ignoreEmulatedMouseEvents) {\n e.stopPropagation();\n return;\n }\n\n state.isPressed = true;\n state.isOverTarget = true;\n state.target = e.currentTarget;\n state.pointerType = isVirtualClick(e.nativeEvent) ? 'virtual' : 'mouse';\n\n if (!isDisabled && !preventFocusOnPress) {\n focusWithoutScrolling(e.currentTarget);\n }\n\n let shouldStopPropagation = triggerPressStart(e, state.pointerType);\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n addGlobalListener(getOwnerDocument(e.currentTarget), 'mouseup', onMouseUp, false);\n };\n\n pressProps.onMouseEnter = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n let shouldStopPropagation = true;\n if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n state.isOverTarget = true;\n shouldStopPropagation = triggerPressStart(e, state.pointerType);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n pressProps.onMouseLeave = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n let shouldStopPropagation = true;\n if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n state.isOverTarget = false;\n shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);\n cancelOnPointerExit(e);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n pressProps.onMouseUp = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (!state.ignoreEmulatedMouseEvents && e.button === 0) {\n triggerPressUp(e, state.pointerType || 'mouse');\n }\n };\n\n let onMouseUp = (e: MouseEvent) => {\n // Only handle left clicks\n if (e.button !== 0) {\n return;\n }\n\n state.isPressed = false;\n removeAllGlobalListeners();\n\n if (state.ignoreEmulatedMouseEvents) {\n state.ignoreEmulatedMouseEvents = false;\n return;\n }\n\n if (state.target && isOverTarget(e, state.target) && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType);\n } else if (state.target && state.isOverTarget && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n }\n\n state.isOverTarget = false;\n };\n\n pressProps.onTouchStart = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n let touch = getTouchFromEvent(e.nativeEvent);\n if (!touch) {\n return;\n }\n state.activePointerId = touch.identifier;\n state.ignoreEmulatedMouseEvents = true;\n state.isOverTarget = true;\n state.isPressed = true;\n state.target = e.currentTarget;\n state.pointerType = 'touch';\n\n // Due to browser inconsistencies, especially on mobile browsers, we prevent default\n // on the emulated mouse event and handle focusing the pressable element ourselves.\n if (!isDisabled && !preventFocusOnPress) {\n focusWithoutScrolling(e.currentTarget);\n }\n\n if (!allowTextSelectionOnPress) {\n disableTextSelection(state.target);\n }\n\n let shouldStopPropagation = triggerPressStart(createTouchEvent(state.target, e), state.pointerType);\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n addGlobalListener(getOwnerWindow(e.currentTarget), 'scroll', onScroll, true);\n };\n\n pressProps.onTouchMove = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (!state.isPressed) {\n e.stopPropagation();\n return;\n }\n\n let touch = getTouchById(e.nativeEvent, state.activePointerId);\n let shouldStopPropagation = true;\n if (touch && isOverTarget(touch, e.currentTarget)) {\n if (!state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = true;\n shouldStopPropagation = triggerPressStart(createTouchEvent(state.target!, e), state.pointerType);\n }\n } else if (state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = false;\n shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target!, e), state.pointerType, false);\n cancelOnPointerExit(createTouchEvent(state.target!, e));\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n pressProps.onTouchEnd = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (!state.isPressed) {\n e.stopPropagation();\n return;\n }\n\n let touch = getTouchById(e.nativeEvent, state.activePointerId);\n let shouldStopPropagation = true;\n if (touch && isOverTarget(touch, e.currentTarget) && state.pointerType != null) {\n triggerPressUp(createTouchEvent(state.target!, e), state.pointerType);\n shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target!, e), state.pointerType);\n } else if (state.isOverTarget && state.pointerType != null) {\n shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target!, e), state.pointerType, false);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n state.isPressed = false;\n state.activePointerId = null;\n state.isOverTarget = false;\n state.ignoreEmulatedMouseEvents = true;\n if (state.target && !allowTextSelectionOnPress) {\n restoreTextSelection(state.target);\n }\n removeAllGlobalListeners();\n };\n\n pressProps.onTouchCancel = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n e.stopPropagation();\n if (state.isPressed) {\n cancel(createTouchEvent(state.target!, e));\n }\n };\n\n let onScroll = (e: Event) => {\n if (state.isPressed && (e.target as Element).contains(state.target)) {\n cancel({\n currentTarget: state.target,\n shiftKey: false,\n ctrlKey: false,\n metaKey: false,\n altKey: false,\n });\n }\n };\n\n pressProps.onDragStart = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n cancel(e);\n };\n }\n\n return pressProps;\n }, [\n addGlobalListener,\n isDisabled,\n preventFocusOnPress,\n removeAllGlobalListeners,\n allowTextSelectionOnPress,\n cancel,\n cancelOnPointerExit,\n triggerPressEnd,\n triggerPressStart,\n triggerPressUp,\n ]);\n\n // Remove user-select: none in case component unmounts immediately after pressStart\n // eslint-disable-next-line arrow-body-style\n useEffect(() => {\n return () => {\n if (!allowTextSelectionOnPress) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n restoreTextSelection(ref.current.target ?? undefined);\n }\n };\n }, [allowTextSelectionOnPress]);\n\n return {\n isPressed: isPressedProp || isPressed,\n pressProps: mergeProps(domProps, pressProps),\n };\n}\n\nfunction isHTMLAnchorLink(target: Element): target is HTMLAnchorElement {\n return target.tagName === 'A' && target.hasAttribute('href');\n}\n\nfunction isValidKeyboardEvent(event: KeyboardEvent, currentTarget: Element): boolean {\n const { key, code } = event;\n const element = currentTarget as HTMLElement;\n const role = element.getAttribute('role');\n // Accessibility for keyboards. Space and Enter only.\n // \"Spacebar\" is for IE 11\n return (\n (key === 'Enter' || key === ' ' || key === 'Spacebar' || code === 'Space') &&\n !(\n (element instanceof getOwnerWindow(element).HTMLInputElement && !isValidInputKey(element, key)) ||\n element instanceof getOwnerWindow(element).HTMLTextAreaElement ||\n element.isContentEditable\n ) &&\n // Links should only trigger with Enter key\n !((role === 'link' || (!role && isHTMLAnchorLink(element))) && key !== 'Enter')\n );\n}\n\nfunction getTouchFromEvent(event: TouchEvent): Touch | null {\n const { targetTouches } = event;\n if (targetTouches.length > 0) {\n return targetTouches[0];\n }\n return null;\n}\n\nfunction getTouchById(event: TouchEvent, pointerId: null | number): null | Touch {\n const changedTouches = event.changedTouches;\n for (let i = 0; i < changedTouches.length; i++) {\n const touch = changedTouches[i];\n if (touch.identifier === pointerId) {\n return touch;\n }\n }\n return null;\n}\n\nfunction createTouchEvent(target: FocusableElement, e: RTouchEvent<FocusableElement>): EventBase {\n let clientX = 0;\n let clientY = 0;\n if (e.targetTouches && e.targetTouches.length === 1) {\n clientX = e.targetTouches[0].clientX;\n clientY = e.targetTouches[0].clientY;\n }\n return {\n currentTarget: target,\n shiftKey: e.shiftKey,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey,\n clientX,\n clientY,\n };\n}\n\nfunction createEvent(target: FocusableElement, e: EventBase): EventBase {\n let clientX = e.clientX;\n let clientY = e.clientY;\n return {\n currentTarget: target,\n shiftKey: e.shiftKey,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey,\n clientX,\n clientY,\n };\n}\n\ninterface Rect {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\ninterface EventPoint {\n clientX: number;\n clientY: number;\n width?: number;\n height?: number;\n radiusX?: number;\n radiusY?: number;\n}\n\nfunction getPointClientRect(point: EventPoint): Rect {\n let offsetX = 0;\n let offsetY = 0;\n if (point.width !== undefined) {\n offsetX = point.width / 2;\n } else if (point.radiusX !== undefined) {\n offsetX = point.radiusX;\n }\n if (point.height !== undefined) {\n offsetY = point.height / 2;\n } else if (point.radiusY !== undefined) {\n offsetY = point.radiusY;\n }\n\n return {\n top: point.clientY - offsetY,\n right: point.clientX + offsetX,\n bottom: point.clientY + offsetY,\n left: point.clientX - offsetX,\n };\n}\n\nfunction areRectanglesOverlapping(a: Rect, b: Rect) {\n // check if they cannot overlap on x axis\n if (a.left > b.right || b.left > a.right) {\n return false;\n }\n // check if they cannot overlap on y axis\n if (a.top > b.bottom || b.top > a.bottom) {\n return false;\n }\n return true;\n}\n\nfunction isOverTarget(point: EventPoint, target: Element) {\n let rect = target.getBoundingClientRect();\n let pointRect = getPointClientRect(point);\n return areRectanglesOverlapping(rect, pointRect);\n}\n\nfunction shouldPreventDefault(target: Element) {\n // We cannot prevent default if the target is a draggable element.\n return !(target instanceof HTMLElement) || !target.hasAttribute('draggable');\n}\n\nfunction shouldPreventDefaultKeyboard(target: Element, key: string) {\n if (target instanceof HTMLInputElement) {\n return !isValidInputKey(target, key);\n }\n\n if (target instanceof HTMLButtonElement) {\n return target.type !== 'submit' && target.type !== 'reset';\n }\n\n if (isHTMLAnchorLink(target)) {\n return false;\n }\n\n return true;\n}\n\nconst nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset',\n]);\n\nfunction isValidInputKey(target: HTMLInputElement, key: string) {\n // Only space should toggle checkboxes and radios, not enter.\n return target.type === 'checkbox' || target.type === 'radio' ? key === ' ' : nonTextInputTypes.has(target.type);\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { BaseEvent } from '../../react-types/shared';\nimport { SyntheticEvent } from 'react';\n\n/**\n * This function wraps a React event handler to make stopPropagation the default, and support continuePropagation instead.\n */\nexport function createEventHandler<T extends SyntheticEvent>(\n handler?: (e: BaseEvent<T>) => void\n): ((e: T) => void) | undefined {\n if (!handler) {\n return undefined;\n }\n\n let shouldStopPropagation = true;\n return (e: T) => {\n let event: BaseEvent<T> = {\n ...e,\n preventDefault() {\n e.preventDefault();\n },\n isDefaultPrevented() {\n return e.isDefaultPrevented();\n },\n stopPropagation() {\n console.error(\n 'stopPropagation is now the default behavior for events in React Spectrum. You can use continuePropagation() to revert this behavior.'\n );\n },\n continuePropagation() {\n shouldStopPropagation = false;\n },\n };\n\n handler(event);\n\n if (shouldStopPropagation) {\n e.stopPropagation();\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 */\n\nimport { createEventHandler } from './createEventHandler';\nimport { DOMAttributes, KeyboardEvents } from '../../react-types/shared';\n\nexport interface KeyboardProps extends KeyboardEvents {\n /** Whether the keyboard events should be disabled. */\n isDisabled?: boolean;\n}\n\nexport interface KeyboardResult {\n /** Props to spread onto the target element. */\n keyboardProps: DOMAttributes;\n}\n\n/**\n * Handles keyboard interactions for a focusable element.\n */\nexport function useKeyboard(props: KeyboardProps): KeyboardResult {\n return {\n keyboardProps: props.isDisabled\n ? {}\n : {\n onKeyDown: createEventHandler(props.onKeyDown),\n onKeyUp: createEventHandler(props.onKeyUp),\n },\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2021 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 */\n\nimport { RefObject, useCallback } from 'react';\nimport { ScrollEvents } from '../../react-types/shared';\nimport { useEvent } from '../utils';\n\nexport interface ScrollWheelProps extends ScrollEvents {\n /** Whether the scroll listener should be disabled. */\n isDisabled?: boolean;\n}\n\n// scroll wheel needs to be added not passively so it's cancelable, small helper hook to remember that\nexport function useScrollWheel(props: ScrollWheelProps, ref: RefObject<HTMLElement>): void {\n let { onScroll, isDisabled } = props;\n let onScrollHandler = useCallback(\n (e) => {\n // If the ctrlKey is pressed, this is a zoom event, do nothing.\n if (e.ctrlKey) {\n return;\n }\n\n // stop scrolling the page\n e.preventDefault();\n e.stopPropagation();\n\n if (onScroll) {\n onScroll({ deltaX: e.deltaX, deltaY: e.deltaY });\n }\n },\n [onScroll]\n );\n\n useEvent(ref, 'wheel', isDisabled ? undefined : onScrollHandler);\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { FocusableElement } from '../../react-types/shared';\nimport { focusWithoutScrolling, getOwnerDocument, runAfterTransition } from '../utils';\nimport { getInteractionModality } from '../interactions';\n\n/**\n * A utility function that focuses an element while avoiding undesired side effects such\n * as page scrolling and screen reader issues with CSS transitions.\n */\nexport function focusSafely(element: FocusableElement) {\n // If the user is interacting with a virtual cursor, e.g. screen reader, then\n // wait until after any animated transitions that are currently occurring on\n // the page before shifting focus. This avoids issues with VoiceOver on iOS\n // causing the page to scroll when moving focus if the element is transitioning\n // from off the screen.\n const ownerDocument = getOwnerDocument(element);\n if (getInteractionModality() === 'virtual') {\n let lastFocusedElement = ownerDocument.activeElement;\n runAfterTransition(() => {\n // If focus did not move and the element is still in the document, focus it.\n if (ownerDocument.activeElement === lastFocusedElement && element.isConnected) {\n focusWithoutScrolling(element);\n }\n });\n } else {\n focusWithoutScrolling(element);\n }\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { DOMAttributes, FocusableDOMProps, FocusableElement, FocusableProps } from '../../react-types/shared';\nimport { focusSafely } from './';\nimport { mergeProps, useObjectRef, useSyncRef } from '../utils';\nimport React, { ForwardedRef, MutableRefObject, ReactNode, RefObject, useContext, useEffect, useRef } from 'react';\nimport { useFocus, useKeyboard } from '../interactions';\n\nexport interface FocusableOptions extends FocusableProps, FocusableDOMProps {\n /** Whether focus should be disabled. */\n isDisabled?: boolean;\n}\n\nexport interface FocusableProviderProps extends DOMAttributes {\n /** The child element to provide DOM props to. */\n children?: ReactNode;\n}\n\ninterface FocusableContextValue extends FocusableProviderProps {\n ref?: MutableRefObject<FocusableElement | null>;\n}\n\nlet FocusableContext = React.createContext<FocusableContextValue | null>(null);\n\nfunction useFocusableContext(ref: RefObject<FocusableElement>): FocusableContextValue {\n let context = useContext(FocusableContext) || {};\n useSyncRef(context, ref);\n\n // eslint-disable-next-line\n let { ref: _, ...otherProps } = context;\n return otherProps;\n}\n\n/**\n * Provides DOM props to the nearest focusable child.\n */\nfunction FocusableProvider(props: FocusableProviderProps, ref: ForwardedRef<FocusableElement>) {\n let { children, ...otherProps } = props;\n let objRef = useObjectRef(ref);\n let context = {\n ...otherProps,\n ref: objRef,\n };\n\n return <FocusableContext.Provider value={context}>{children}</FocusableContext.Provider>;\n}\n\nlet _FocusableProvider = React.forwardRef(FocusableProvider);\nexport { _FocusableProvider as FocusableProvider };\n\nexport interface FocusableAria {\n /** Props for the focusable element. */\n focusableProps: DOMAttributes;\n}\n\n/**\n * Used to make an element focusable and capable of auto focus.\n */\nexport function useFocusable(props: FocusableOptions, domRef: RefObject<FocusableElement>): FocusableAria {\n let { focusProps } = useFocus(props);\n let { keyboardProps } = useKeyboard(props);\n let interactions = mergeProps(focusProps, keyboardProps);\n let domProps = useFocusableContext(domRef);\n let interactionProps = props.isDisabled ? {} : domProps;\n let autoFocusRef = useRef(props.autoFocus);\n\n useEffect(() => {\n if (autoFocusRef.current && domRef.current) {\n focusSafely(domRef.current);\n }\n autoFocusRef.current = false;\n }, [domRef]);\n\n return {\n focusableProps: mergeProps(\n {\n ...interactions,\n tabIndex: props.excludeFromTabOrder && !props.isDisabled ? -1 : undefined,\n },\n interactionProps\n ),\n };\n}\n","import { ChangeEvent, FocusEvent, KeyboardEvent, ComponentProps } from 'react';\nimport { ValueOf, StylingTransientProps } from '../../types';\nimport { TextFieldProps } from '../text-field';\n\n/**\n * Component variant.\n */\nexport const NumberFieldVariant = {\n default: 'default',\n underline: 'underline',\n} as const;\nexport type NumberFieldVariant = ValueOf<typeof NumberFieldVariant>;\n\n/**\n * Component props.\n */\nexport interface NumberFieldProps\n extends Omit<\n TextFieldProps,\n | 'defaultValue'\n | 'onChange'\n | 'value'\n | 'onBlur'\n | 'onFocus'\n | 'onKeyDown'\n | 'onKeyUp'\n | 'after'\n | 'internal'\n | 'pills'\n | 'placeholder'\n > {\n /** Handler that is called when the element receives focus. */\n onFocus?: (e: FocusEvent<Element>) => void;\n /** Handler that is called when the element loses focus. */\n onBlur?: (e: FocusEvent<Element>) => void;\n /** Handler that is called when the element's focus status changes. */\n onFocusChange?: (isFocused: boolean) => void;\n /** Handler that is called when a key is pressed. */\n onKeyDown?: (e: KeyboardEvent<HTMLElement>) => void;\n /** Handler that is called when a key is released. */\n onKeyUp?: (e: KeyboardEvent<HTMLElement>) => void;\n /**\n * Default value.\n * Used for uncontrolled version.\n */\n defaultValue?: number;\n /** Method to handle component change. */\n onChange?(value?: number, name?: string, event?: ChangeEvent<HTMLInputElement>): void;\n /**\n * Input value.\n * Used for controlled version.\n */\n value?: number;\n /** Placeholder. */\n placeholder?: number;\n /** A custom aria-label for the decrement button. If not provided, the localized string \"Decrement\" is used. */\n decrementAriaLabel?: string;\n /** A custom aria-label for the increment button. If not provided, the localized string \"Increment\" is used. */\n incrementAriaLabel?: string;\n /**\n * Enables or disables changing the value with scroll.\n */\n isWheelDisabled?: boolean;\n /**\n * Formatting options for the value displayed in the number field.\n * This also affects what characters are allowed to be typed by the user.\n */\n formatOptions?: Intl.NumberFormatOptions;\n /** The smallest value allowed for the input. */\n minValue?: number;\n /** The largest value allowed for the input. */\n maxValue?: number;\n /** The amount that the input value changes with each increment or decrement \"tick\". */\n step?: number;\n}\n\nexport interface StyledNumberFieldProps extends ComponentProps<'div'>, StylingTransientProps {\n $hasLeftIcon: boolean;\n $hasContent: boolean;\n $isColored: NumberFieldProps['isColored'];\n $isDisabled: NumberFieldProps['isDisabled'];\n $isInvalid: NumberFieldProps['isInvalid'];\n $isFocused: boolean;\n $isFocusVisible: boolean;\n $isRequired: NumberFieldProps['isRequired'];\n $theme: NumberFieldProps['theme'];\n $variant: NumberFieldProps['variant'];\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2023 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 */\n\nimport { createContext, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { Validation, ValidationErrors, ValidationFunction, ValidationResult } from '../../react-types/shared';\n\nexport const VALID_VALIDITY_STATE: ValidityState = {\n badInput: false,\n customError: false,\n patternMismatch: false,\n rangeOverflow: false,\n rangeUnderflow: false,\n stepMismatch: false,\n tooLong: false,\n tooShort: false,\n typeMismatch: false,\n valueMissing: false,\n valid: true,\n};\n\nconst CUSTOM_VALIDITY_STATE: ValidityState = {\n ...VALID_VALIDITY_STATE,\n customError: true,\n valid: false,\n};\n\nexport const DEFAULT_VALIDATION_RESULT: ValidationResult = {\n isInvalid: false,\n validationDetails: VALID_VALIDITY_STATE,\n validationErrors: [],\n};\n\nexport const FormValidationContext = createContext<ValidationErrors>({});\n\nexport const privateValidationStateProp = '__formValidationState' + Date.now();\n\ninterface FormValidationProps<T> extends Validation<T> {\n builtinValidation?: ValidationResult;\n name?: string | string[];\n value: T;\n}\n\nexport interface FormValidationState {\n /** Realtime validation results, updated as the user edits the value. */\n realtimeValidation: ValidationResult;\n /** Currently displayed validation results, updated when the user commits their changes. */\n displayValidation: ValidationResult;\n /** Updates the current validation result. Not displayed to the user until `commitValidation` is called. */\n updateValidation(result: ValidationResult): void;\n /** Resets the displayed validation state to valid when the user resets the form. */\n resetValidation(): void;\n /** Commits the realtime validation so it is displayed to the user. */\n commitValidation(): void;\n}\n\nexport function useFormValidationState<T>(props: FormValidationProps<T>): FormValidationState {\n // Private prop for parent components to pass state to children.\n if (props[privateValidationStateProp]) {\n let { realtimeValidation, displayValidation, updateValidation, resetValidation, commitValidation } = props[\n privateValidationStateProp\n ] as FormValidationState;\n return { realtimeValidation, displayValidation, updateValidation, resetValidation, commitValidation };\n }\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useFormValidationStateImpl(props);\n}\n\nfunction useFormValidationStateImpl<T>(props: FormValidationProps<T>): FormValidationState {\n let { isInvalid, validationState, name, value, builtinValidation, validate, validationBehavior = 'aria' } = props;\n\n // backward compatibility.\n if (validationState) {\n isInvalid ||= validationState === 'invalid';\n }\n\n // If the isInvalid prop is controlled, update validation result in realtime.\n let controlledError: ValidationResult | null =\n isInvalid !== undefined\n ? {\n isInvalid,\n validationErrors: [],\n validationDetails: CUSTOM_VALIDITY_STATE,\n }\n : null;\n\n // Perform custom client side validation.\n let clientError: ValidationResult | null = useMemo(\n () => getValidationResult(runValidate(validate, value)),\n [validate, value]\n );\n\n if (builtinValidation?.validationDetails.valid) {\n builtinValidation = null;\n }\n\n // Get relevant server errors from the form.\n let serverErrors = useContext(FormValidationContext);\n let serverErrorMessages = useMemo(() => {\n if (name) {\n return Array.isArray(name) ? name.flatMap((name) => asArray(serverErrors[name])) : asArray(serverErrors[name]);\n }\n return [];\n }, [serverErrors, name]);\n\n // Show server errors when the form gets a new value, and clear when the user changes the value.\n let [lastServerErrors, setLastServerErrors] = useState(serverErrors);\n let [isServerErrorCleared, setServerErrorCleared] = useState(false);\n if (serverErrors !== lastServerErrors) {\n setLastServerErrors(serverErrors);\n setServerErrorCleared(false);\n }\n\n let serverError: ValidationResult | null = useMemo(\n () => getValidationResult(isServerErrorCleared ? [] : serverErrorMessages),\n [isServerErrorCleared, serverErrorMessages]\n );\n\n // Track the next validation state in a ref until commitValidation is called.\n let nextValidation = useRef(DEFAULT_VALIDATION_RESULT);\n let [currentValidity, setCurrentValidity] = useState(DEFAULT_VALIDATION_RESULT);\n\n let lastError = useRef(DEFAULT_VALIDATION_RESULT);\n let commitValidation = () => {\n if (!commitQueued) {\n return;\n }\n\n setCommitQueued(false);\n let error = clientError || builtinValidation || nextValidation.current;\n if (!isEqualValidation(error, lastError.current)) {\n lastError.current = error;\n setCurrentValidity(error);\n }\n };\n\n let [commitQueued, setCommitQueued] = useState(false);\n useEffect(commitValidation);\n\n // realtimeValidation is used to update the native input element's state based on custom validation logic.\n // displayValidation is the currently displayed validation state that the user sees (e.g. on input change/form submit).\n // With validationBehavior=\"aria\", all errors are displayed in realtime rather than on submit.\n let realtimeValidation =\n controlledError || serverError || clientError || builtinValidation || DEFAULT_VALIDATION_RESULT;\n let displayValidation =\n validationBehavior === 'native'\n ? controlledError || serverError || currentValidity\n : controlledError || serverError || clientError || builtinValidation || currentValidity;\n\n return {\n realtimeValidation,\n displayValidation,\n updateValidation(value) {\n // If validationBehavior is 'aria', update in realtime. Otherwise, store in a ref until commit.\n if (validationBehavior === 'aria' && !isEqualValidation(currentValidity, value)) {\n setCurrentValidity(value);\n } else {\n nextValidation.current = value;\n }\n },\n resetValidation() {\n // Update the currently displayed validation state to valid on form reset,\n // even if the native validity says it isn't. It'll show again on the next form submit.\n let error = DEFAULT_VALIDATION_RESULT;\n if (!isEqualValidation(error, lastError.current)) {\n lastError.current = error;\n setCurrentValidity(error);\n }\n\n // Do not commit validation after the next render. This avoids a condition where\n // useSelect calls commitValidation inside an onReset handler.\n if (validationBehavior === 'native') {\n setCommitQueued(false);\n }\n\n setServerErrorCleared(true);\n },\n commitValidation() {\n // Commit validation state so the user sees it on blur/change/submit. Also clear any server errors.\n // Wait until after the next render to commit so that the latest value has been validated.\n if (validationBehavior === 'native') {\n setCommitQueued(true);\n }\n setServerErrorCleared(true);\n },\n };\n}\n\nfunction asArray<T>(v: T | T[]): T[] {\n if (!v) {\n return [];\n }\n\n return Array.isArray(v) ? v : [v];\n}\n\nfunction runValidate<T>(validate: ValidationFunction<T>, value: T): string[] {\n if (typeof validate === 'function') {\n let e = validate(value);\n if (e && typeof e !== 'boolean') {\n return asArray(e);\n }\n }\n\n return [];\n}\n\nfunction getValidationResult(errors: string[]): ValidationResult | null {\n return errors.length\n ? {\n isInvalid: true,\n validationErrors: errors,\n validationDetails: CUSTOM_VALIDITY_STATE,\n }\n : null;\n}\n\nfunction isEqualValidation(a: ValidationResult | null, b: ValidationResult | null): boolean {\n if (a === b) {\n return true;\n }\n\n return (\n a &&\n b &&\n a.isInvalid === b.isInvalid &&\n a.validationErrors.length === b.validationErrors.length &&\n a.validationErrors.every((a, i) => a === b.validationErrors[i]) &&\n Object.entries(a.validationDetails).every(([k, v]) => b.validationDetails[k] === v)\n );\n}\n\nexport function mergeValidation(...results: ValidationResult[]): ValidationResult {\n let errors = new Set<string>();\n let isInvalid = false;\n let validationDetails = {\n ...VALID_VALIDITY_STATE,\n };\n\n for (let v of results) {\n for (let e of v.validationErrors) {\n errors.add(e);\n }\n\n // Only these properties apply for checkboxes.\n isInvalid ||= v.isInvalid;\n for (let key in validationDetails) {\n validationDetails[key] ||= v.validationDetails[key];\n }\n }\n\n validationDetails.valid = !isInvalid;\n return {\n isInvalid,\n validationErrors: [...errors],\n validationDetails,\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { clamp, snapValueToStep, useControlledState } from '../utils';\nimport { FormValidationState, useFormValidationState } from '../form';\nimport { NumberFieldProps } from '../../react-types/numberfield';\nimport { NumberFormatter, NumberParser } from '../../internationalized/number';\nimport { useCallback, useMemo, useState } from 'react';\n\nexport interface NumberFieldState extends FormValidationState {\n /**\n * The current text value of the input. Updated as the user types,\n * and formatted according to `formatOptions` on blur.\n */\n inputValue: string;\n /**\n * The currently parsed number value, or NaN if a valid number could not be parsed.\n * Updated based on the `inputValue` as the user types.\n */\n numberValue: number;\n /** The default value of the input. */\n defaultNumberValue: number;\n /** The minimum value of the number field. */\n minValue?: number;\n /** The maximum value of the number field. */\n maxValue?: number;\n /** Whether the current value can be incremented according to the maximum value and step. */\n canIncrement: boolean;\n /** Whether the current value can be decremented according to the minimum value and step. */\n canDecrement: boolean;\n /**\n * Validates a user input string according to the current locale and format options.\n * Values can be partially entered, and may be valid even if they cannot currently be parsed to a number.\n * Can be used to implement validation as a user types.\n */\n validate(value: string): boolean;\n /** Sets the current text value of the input. */\n setInputValue(val: string): void;\n /** Sets the number value. */\n setNumberValue(val: number): void;\n /**\n * Commits the current input value. The value is parsed to a number, clamped according\n * to the minimum and maximum values of the field, and snapped to the nearest step value.\n * This will fire the `onChange` prop with the new value, and if uncontrolled, update the `numberValue`.\n * Typically this is called when the field is blurred.\n */\n commit(): void;\n /** Increments the current input value to the next step boundary, and fires `onChange`. */\n increment(): void;\n /** Decrements the current input value to the next step boundary, and fires `onChange`. */\n decrement(): void;\n /** Sets the current value to the `maxValue` if any, and fires `onChange`. */\n incrementToMax(): void;\n /** Sets the current value to the `minValue` if any, and fires `onChange`. */\n decrementToMin(): void;\n}\n\nexport interface NumberFieldStateOptions extends NumberFieldProps {\n /**\n * The locale that should be used for parsing.\n * @default 'en-US'\n */\n locale: string;\n}\n\n/**\n * Provides state management for a number field component. Number fields allow users to enter a number,\n * and increment or decrement the value using stepper buttons.\n */\nexport function useNumberFieldState(props: NumberFieldStateOptions): NumberFieldState {\n let {\n minValue,\n maxValue,\n step,\n formatOptions,\n value,\n defaultValue = NaN,\n onChange,\n locale,\n isDisabled,\n isReadOnly,\n } = props;\n\n if (value === null) {\n value = NaN;\n }\n\n if (value !== undefined && !isNaN(value)) {\n if (step !== undefined && !isNaN(step)) {\n value = snapValueToStep(value, minValue, maxValue, step);\n } else {\n value = clamp(value, minValue, maxValue);\n }\n }\n\n if (!isNaN(defaultValue)) {\n if (step !== undefined && !isNaN(step)) {\n defaultValue = snapValueToStep(defaultValue, minValue, maxValue, step);\n } else {\n defaultValue = clamp(defaultValue, minValue, maxValue);\n }\n }\n\n let [numberValue, setNumberValue] = useControlledState<number>(\n value,\n isNaN(defaultValue) ? NaN : defaultValue,\n onChange\n );\n let [initialValue] = useState(numberValue);\n let [inputValue, setInputValue] = useState(() =>\n isNaN(numberValue) ? '' : new NumberFormatter(locale, formatOptions).format(numberValue)\n );\n\n let numberParser = useMemo(() => new NumberParser(locale, formatOptions), [locale, formatOptions]);\n let numberingSystem = useMemo(() => numberParser.getNumberingSystem(inputValue), [numberParser, inputValue]);\n let formatter = useMemo(\n () => new NumberFormatter(locale, { ...formatOptions, numberingSystem }),\n [locale, formatOptions, numberingSystem]\n );\n let intlOptions = useMemo(() => formatter.resolvedOptions(), [formatter]);\n let format = useCallback(\n (value: number) => (isNaN(value) || value === null ? '' : formatter.format(value)),\n [formatter]\n );\n\n let validation = useFormValidationState({\n ...props,\n value: numberValue,\n });\n\n let clampStep = step !== undefined && !isNaN(step) ? step : 1;\n if (intlOptions.style === 'percent' && (step === undefined || isNaN(step))) {\n clampStep = 0.01;\n }\n\n // Update the input value when the number value or format options change. This is done\n // in a useEffect so that the controlled behavior is correct and we only update the\n // textfield after prop changes.\n let [prevValue, setPrevValue] = useState(numberValue);\n let [prevLocale, setPrevLocale] = useState(locale);\n let [prevFormatOptions, setPrevFormatOptions] = useState(formatOptions);\n if (!Object.is(numberValue, prevValue) || locale !== prevLocale || formatOptions !== prevFormatOptions) {\n setInputValue(format(numberValue));\n setPrevValue(numberValue);\n setPrevLocale(locale);\n setPrevFormatOptions(formatOptions);\n }\n\n let parsedValue = useMemo(() => numberParser.parse(inputValue), [numberParser, inputValue]);\n let commit = () => {\n // Set to empty state if input value is empty\n if (!inputValue.length) {\n setNumberValue(NaN);\n setInputValue(value === undefined ? '' : format(numberValue));\n return;\n }\n\n // if it failed to parse, then reset input to formatted version of current number\n if (isNaN(parsedValue)) {\n setInputValue(format(numberValue));\n return;\n }\n\n // Clamp to min and max, round to the nearest step, and round to specified number of digits\n let clampedValue: number;\n if (step === undefined || isNaN(step)) {\n clampedValue = clamp(parsedValue, minValue, maxValue);\n } else {\n clampedValue = snapValueToStep(parsedValue, minValue, maxValue, step);\n }\n\n clampedValue = numberParser.parse(format(clampedValue));\n setNumberValue(clampedValue);\n\n // in a controlled state, the numberValue won't change, so we won't go back to our old input without help\n setInputValue(format(value === undefined ? clampedValue : numberValue));\n validation.commitValidation();\n };\n\n let safeNextStep = (operation: '+' | '-', minMax: number = 0) => {\n let prev = parsedValue;\n\n if (isNaN(prev)) {\n // if the input is empty, start from the min/max value when incrementing/decrementing,\n // or zero if there is no min/max value defined.\n let newValue = isNaN(minMax) ? 0 : minMax;\n return snapValueToStep(newValue, minValue, maxValue, clampStep);\n } else {\n // otherwise, first snap the current value to the nearest step. if it moves in the direction\n // we're going, use that value, otherwise add the step and snap that value.\n let newValue = snapValueToStep(prev, minValue, maxValue, clampStep);\n if ((operation === '+' && newValue > prev) || (operation === '-' && newValue < prev)) {\n return newValue;\n }\n\n return snapValueToStep(handleDecimalOperation(operation, prev, clampStep), minValue, maxValue, clampStep);\n }\n };\n\n let increment = () => {\n let newValue = safeNextStep('+', minValue);\n\n // if we've arrived at the same value that was previously in the state, the\n // input value should be updated to match\n // ex type 4, press increment, highlight the number in the input, type 4 again, press increment\n // you'd be at 5, then incrementing to 5 again, so no re-render would happen and 4 would be left in the input\n if (newValue === numberValue) {\n setInputValue(format(newValue));\n }\n\n setNumberValue(newValue);\n validation.commitValidation();\n };\n\n let decrement = () => {\n let newValue = safeNextStep('-', maxValue);\n\n if (newValue === numberValue) {\n setInputValue(format(newValue));\n }\n\n setNumberValue(newValue);\n validation.commitValidation();\n };\n\n let incrementToMax = () => {\n if (maxValue != null) {\n setNumberValue(snapValueToStep(maxValue, minValue, maxValue, clampStep));\n validation.commitValidation();\n }\n };\n\n let decrementToMin = () => {\n if (minValue != null) {\n setNumberValue(minValue);\n validation.commitValidation();\n }\n };\n\n let canIncrement = useMemo(\n () =>\n !isDisabled &&\n !isReadOnly &&\n (isNaN(parsedValue) ||\n maxValue === undefined ||\n isNaN(maxValue) ||\n snapValueToStep(parsedValue, minValue, maxValue, clampStep) > parsedValue ||\n handleDecimalOperation('+', parsedValue, clampStep) <= maxValue),\n [isDisabled, isReadOnly, minValue, maxValue, clampStep, parsedValue]\n );\n\n let canDecrement = useMemo(\n () =>\n !isDisabled &&\n !isReadOnly &&\n (isNaN(parsedValue) ||\n minValue === undefined ||\n isNaN(minValue) ||\n snapValueToStep(parsedValue, minValue, maxValue, clampStep) < parsedValue ||\n handleDecimalOperation('-', parsedValue, clampStep) >= minValue),\n [isDisabled, isReadOnly, minValue, maxValue, clampStep, parsedValue]\n );\n\n let validate = (value: string) => numberParser.isValidPartialNumber(value, minValue, maxValue);\n\n return {\n ...validation,\n validate,\n increment,\n incrementToMax,\n decrement,\n decrementToMin,\n canIncrement,\n canDecrement,\n minValue,\n maxValue,\n numberValue: parsedValue,\n defaultNumberValue: isNaN(defaultValue) ? initialValue : defaultValue,\n setNumberValue,\n setInputValue,\n inputValue,\n commit,\n };\n}\n\nfunction handleDecimalOperation(operator: '-' | '+', value1: number, value2: number): number {\n let result = operator === '+' ? value1 + value2 : value1 - value2;\n\n // Check if we have decimals\n if (value1 % 1 !== 0 || value2 % 1 !== 0) {\n const value1Decimal = value1.toString().split('.');\n const value2Decimal = value2.toString().split('.');\n const value1DecimalLength = (value1Decimal[1] && value1Decimal[1].length) || 0;\n const value2DecimalLength = (value2Decimal[1] && value2Decimal[1].length) || 0;\n const multiplier = Math.pow(10, Math.max(value1DecimalLength, value2DecimalLength));\n\n // Transform the decimals to integers based on the precision\n value1 = Math.round(value1 * multiplier);\n value2 = Math.round(value2 * multiplier);\n\n // Perform the operation on integers values to make sure we don't get a fancy decimal value\n result = operator === '+' ? value1 + value2 : value1 - value2;\n\n // Transform the integer result back to decimal\n result /= multiplier;\n }\n\n return result;\n}\n","import enUS from './en-US.json';\nimport frFR from './fr-FR.json';\n\nexport default {\n 'en-US': enUS,\n 'fr-FR': frFR,\n};\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { AriaLabelingProps, DOMAttributes, DOMProps, LabelableProps } from '../../react-types/shared';\nimport { ElementType, LabelHTMLAttributes } from 'react';\nimport { useId, useLabels } from '../utils';\n\nexport interface LabelAriaProps extends LabelableProps, DOMProps, AriaLabelingProps {\n /**\n * The HTML element used to render the label, e.g. 'label', or 'span'.\n * @default 'label'\n */\n labelElementType?: ElementType;\n}\n\nexport interface LabelAria {\n /** Props to apply to the label container element. */\n labelProps: DOMAttributes | LabelHTMLAttributes<HTMLLabelElement>;\n /** Props to apply to the field container element being labeled. */\n fieldProps: AriaLabelingProps & DOMProps;\n}\n\n/**\n * Provides the accessibility implementation for labels and their associated elements.\n * Labels provide context for user inputs.\n * @param props - The props for labels and fields.\n */\nexport function useLabel(props: LabelAriaProps): LabelAria {\n let { id, label, 'aria-labelledby': ariaLabelledby, 'aria-label': ariaLabel, labelElementType = 'label' } = props;\n\n id = useId(id);\n let labelId = useId();\n let labelProps = {};\n if (label) {\n ariaLabelledby = ariaLabelledby ? `${labelId} ${ariaLabelledby}` : labelId;\n labelProps = {\n id: labelId,\n htmlFor: labelElementType === 'label' ? id : undefined,\n };\n } else if (!ariaLabelledby && !ariaLabel) {\n console.warn(\n 'If you do not provide a visible label, you must specify an aria-label or aria-labelledby attribute for accessibility'\n );\n }\n\n let fieldProps = useLabels({\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n });\n\n return {\n labelProps,\n fieldProps,\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2021 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 */\n\nimport { DOMAttributes, HelpTextProps, Validation } from '../../react-types/shared';\nimport { LabelAria, LabelAriaProps, useLabel } from './useLabel';\nimport { mergeProps, useSlotId } from '../utils';\n\nexport interface AriaFieldProps extends LabelAriaProps, HelpTextProps, Omit<Validation<any>, 'isRequired'> {}\n\nexport interface FieldAria extends LabelAria {\n /** Props for the description element, if any. */\n descriptionProps: DOMAttributes;\n /** Props for the error message element, if any. */\n errorMessageProps: DOMAttributes;\n}\n\n/**\n * Provides the accessibility implementation for input fields.\n * Fields accept user input, gain context from their label, and may display a description or error message.\n * @param props - Props for the Field.\n */\nexport function useField(props: AriaFieldProps): FieldAria {\n let { description, errorMessage, isInvalid, validationState } = props;\n let { labelProps, fieldProps } = useLabel(props);\n\n let descriptionId = useSlotId([Boolean(description), Boolean(errorMessage), isInvalid, validationState]);\n let errorMessageId = useSlotId([Boolean(description), Boolean(errorMessage), isInvalid, validationState]);\n\n fieldProps = mergeProps(fieldProps, {\n 'aria-describedby':\n [\n descriptionId,\n // Use aria-describedby for error message because aria-errormessage is unsupported using VoiceOver or NVDA. See https://github.com/adobe/react-spectrum/issues/1346#issuecomment-740136268\n errorMessageId,\n props['aria-describedby'],\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n });\n\n return {\n labelProps,\n fieldProps,\n descriptionProps: {\n id: descriptionId,\n },\n errorMessageProps: {\n id: errorMessageId,\n },\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2023 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 */\n\nimport { FormValidationState } from '../../react-stately/form';\nimport { RefObject, useEffect } from 'react';\nimport { setInteractionModality } from '../interactions';\nimport { useEffectEvent, useLayoutEffect } from '../utils';\nimport { Validation, ValidationResult } from '../../react-types/shared';\n\ntype ValidatableElement = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n\ninterface FormValidationProps<T> extends Validation<T> {\n focus?: () => void;\n}\n\nexport function useFormValidation<T>(\n props: FormValidationProps<T>,\n state: FormValidationState,\n ref: RefObject<ValidatableElement> | undefined\n) {\n let { validationBehavior, focus } = props;\n\n // This is a useLayoutEffect so that it runs before the useEffect in useFormValidationState, which commits the validation change.\n useLayoutEffect(() => {\n if (validationBehavior === 'native' && ref?.current) {\n let errorMessage = state.realtimeValidation.isInvalid\n ? state.realtimeValidation.validationErrors.join(' ') || 'Invalid value.'\n : '';\n ref.current.setCustomValidity(errorMessage);\n\n // Prevent default tooltip for validation message.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=605277\n if (!ref.current.hasAttribute('title')) {\n ref.current.title = '';\n }\n\n if (!state.realtimeValidation.isInvalid) {\n state.updateValidation(getNativeValidity(ref.current));\n }\n }\n });\n\n let onReset = useEffectEvent(() => {\n state.resetValidation();\n });\n\n let onInvalid = useEffectEvent((e: Event) => {\n // Only commit validation if we are not already displaying one.\n // This avoids clearing server errors that the user didn't actually fix.\n if (!state.displayValidation.isInvalid) {\n state.commitValidation();\n }\n\n // Auto focus the first invalid input in a form, unless the error already had its default prevented.\n let form = ref?.current?.form;\n if (!e.defaultPrevented && ref && form && getFirstInvalidInput(form) === ref.current) {\n if (focus) {\n focus();\n } else {\n ref.current?.focus();\n }\n\n // Always show focus ring.\n setInteractionModality('keyboard');\n }\n\n // Prevent default browser error UI from appearing.\n e.preventDefault();\n });\n\n let onChange = useEffectEvent(() => {\n state.commitValidation();\n });\n\n useEffect(() => {\n let input = ref?.current;\n if (!input) {\n return;\n }\n\n let form = input.form;\n input.addEventListener('invalid', onInvalid);\n input.addEventListener('change', onChange);\n form?.addEventListener('reset', onReset);\n return () => {\n input!.removeEventListener('invalid', onInvalid);\n input!.removeEventListener('change', onChange);\n form?.removeEventListener('reset', onReset);\n };\n }, [ref, onInvalid, onChange, onReset, validationBehavior]);\n}\n\nfunction getValidity(input: ValidatableElement) {\n // The native ValidityState object is live, meaning each property is a getter that returns the current state.\n // We need to create a snapshot of the validity state at the time this function is called to avoid unpredictable React renders.\n let validity = input.validity;\n return {\n badInput: validity.badInput,\n customError: validity.customError,\n patternMismatch: validity.patternMismatch,\n rangeOverflow: validity.rangeOverflow,\n rangeUnderflow: validity.rangeUnderflow,\n stepMismatch: validity.stepMismatch,\n tooLong: validity.tooLong,\n tooShort: validity.tooShort,\n typeMismatch: validity.typeMismatch,\n valueMissing: validity.valueMissing,\n valid: validity.valid,\n };\n}\n\nfunction getNativeValidity(input: ValidatableElement): ValidationResult {\n return {\n isInvalid: !input.validity.valid,\n validationDetails: getValidity(input),\n validationErrors: input.validationMessage ? [input.validationMessage] : [],\n };\n}\n\nfunction getFirstInvalidInput(form: HTMLFormElement): ValidatableElement | null {\n for (let i = 0; i < form.elements.length; i++) {\n let element = form.elements[i] as ValidatableElement;\n if (!element.validity.valid) {\n return element;\n }\n }\n\n return null;\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { AriaTextFieldProps } from '../../react-types/textfield';\nimport { ChangeEvent, DOMFactory, HTMLAttributes, LabelHTMLAttributes, ReactDOM, RefObject, useEffect } from 'react';\nimport { DOMAttributes, ValidationResult } from '../../react-types/shared';\nimport { filterDOMProps, getOwnerWindow, mergeProps, useFormReset } from '../utils';\nimport { useControlledState } from '../../react-stately/utils';\nimport { useField } from '../label';\nimport { useFocusable } from '../focus';\nimport { useFormValidation } from '../form';\nimport { useFormValidationState } from '../../react-stately/form';\n\n/**\n * A map of HTML element names and their interface types.\n * For example `'a'` -> `HTMLAnchorElement`.\n */\ntype IntrinsicHTMLElements = {\n [K in keyof IntrinsicHTMLAttributes]: IntrinsicHTMLAttributes[K] extends HTMLAttributes<infer T> ? T : never;\n};\n\n/**\n * A map of HTML element names and their attribute interface types.\n * For example `'a'` -> `AnchorHTMLAttributes<HTMLAnchorElement>`.\n */\ntype IntrinsicHTMLAttributes = {\n [K in keyof ReactDOM]: ReactDOM[K] extends DOMFactory<infer T, any> ? T : never;\n};\n\ntype DefaultElementType = 'input';\n\n/**\n * The intrinsic HTML element names that `useTextField` supports; e.g. `input`,\n * `textarea`.\n */\ntype TextFieldIntrinsicElements = keyof Pick<IntrinsicHTMLElements, 'input' | 'textarea'>;\n\n/**\n * The HTML element interfaces that `useTextField` supports based on what is\n * defined for `TextFieldIntrinsicElements`; e.g. `HTMLInputElement`,\n * `HTMLTextAreaElement`.\n */\ntype TextFieldHTMLElementType = Pick<IntrinsicHTMLElements, TextFieldIntrinsicElements>;\n\n/**\n * The HTML attributes interfaces that `useTextField` supports based on what\n * is defined for `TextFieldIntrinsicElements`; e.g. `InputHTMLAttributes`,\n * `TextareaHTMLAttributes`.\n */\ntype TextFieldHTMLAttributesType = Pick<IntrinsicHTMLAttributes, TextFieldIntrinsicElements>;\n\n/**\n * The type of `inputProps` returned by `useTextField`; e.g. `InputHTMLAttributes`,\n * `TextareaHTMLAttributes`.\n */\ntype TextFieldInputProps<T extends TextFieldIntrinsicElements> = TextFieldHTMLAttributesType[T];\n\nexport interface AriaTextFieldOptions<T extends TextFieldIntrinsicElements> extends AriaTextFieldProps {\n /**\n * The HTML element used to render the input, e.g. 'input', or 'textarea'.\n * It determines whether certain HTML attributes will be included in `inputProps`.\n * For example, [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-type).\n * @default 'input'\n */\n inputElementType?: T;\n /**\n * Controls whether inputted text is automatically capitalized and, if so, in what manner.\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize).\n */\n autoCapitalize?: 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters';\n}\n\n/**\n * The type of `ref` object that can be passed to `useTextField` based on the given\n * intrinsic HTML element name; e.g.`RefObject<HTMLInputElement>`,\n * `RefObject<HTMLTextAreaElement>`.\n */\ntype TextFieldRefObject<T extends TextFieldIntrinsicElements> = RefObject<TextFieldHTMLElementType[T]>;\n\nexport interface TextFieldAria<T extends TextFieldIntrinsicElements = DefaultElementType> extends ValidationResult {\n /** Props for the input element. */\n inputProps: TextFieldInputProps<T>;\n /** Props for the text field's visible label element, if any. */\n labelProps: DOMAttributes | LabelHTMLAttributes<HTMLLabelElement>;\n /** Props for the text field's description element, if any. */\n descriptionProps: DOMAttributes;\n /** Props for the text field's error message element, if any. */\n errorMessageProps: DOMAttributes;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a text field.\n * @param props - Props for the text field.\n * @param ref - Ref to the HTML input or textarea element.\n */\nexport function useTextField<T extends TextFieldIntrinsicElements = DefaultElementType>(\n props: AriaTextFieldOptions<T>,\n ref: TextFieldRefObject<T>\n): TextFieldAria<T> {\n let {\n inputElementType = 'input',\n isDisabled = false,\n isRequired = false,\n isReadOnly = false,\n type = 'text',\n validationBehavior = 'aria',\n }: AriaTextFieldOptions<TextFieldIntrinsicElements> = props;\n let [value, setValue] = useControlledState<string>(props.value, props.defaultValue || '', props.onChange);\n let { focusableProps } = useFocusable(props, ref);\n let validationState = useFormValidationState({\n ...props,\n value,\n });\n let { isInvalid, validationErrors, validationDetails } = validationState.displayValidation;\n let { labelProps, fieldProps, descriptionProps, errorMessageProps } = useField({\n ...props,\n isInvalid,\n errorMessage: props.errorMessage || validationErrors,\n });\n let domProps = filterDOMProps(props, { labelable: true });\n\n const inputOnlyProps = {\n type,\n pattern: props.pattern,\n };\n\n useFormReset(ref, value, setValue);\n useFormValidation(props, validationState, ref);\n\n useEffect(() => {\n // This works around a React/Chrome bug that prevents textarea elements from validating when controlled.\n // We prevent React from updating defaultValue (i.e. children) of textarea when `value` changes,\n // which causes Chrome to skip validation. Only updating `value` is ok in our case since our\n // textareas are always controlled. React is planning on removing this synchronization in a\n // future major version.\n // https://github.com/facebook/react/issues/19474\n // https://github.com/facebook/react/issues/11896\n if (ref.current instanceof getOwnerWindow(ref.current).HTMLTextAreaElement) {\n let input = ref.current;\n Object.defineProperty(input, 'defaultValue', {\n get: () => input.value,\n set: () => {},\n configurable: true,\n });\n }\n }, [ref]);\n\n return {\n labelProps,\n inputProps: mergeProps(domProps, inputElementType === 'input' ? inputOnlyProps : undefined, {\n disabled: isDisabled,\n readOnly: isReadOnly,\n required: isRequired && validationBehavior === 'native',\n 'aria-required': (isRequired && validationBehavior === 'aria') || undefined,\n 'aria-invalid': isInvalid || undefined,\n 'aria-errormessage': props['aria-errormessage'],\n 'aria-activedescendant': props['aria-activedescendant'],\n 'aria-autocomplete': props['aria-autocomplete'],\n 'aria-haspopup': props['aria-haspopup'],\n value,\n onChange: (e: ChangeEvent<HTMLInputElement>) => setValue(e.target.value),\n autoComplete: props.autoComplete,\n autoCapitalize: props.autoCapitalize,\n maxLength: props.maxLength,\n minLength: props.minLength,\n name: props.name,\n placeholder: props.placeholder,\n inputMode: props.inputMode,\n\n // Clipboard events\n onCopy: props.onCopy,\n onCut: props.onCut,\n onPaste: props.onPaste,\n\n // Composition events\n onCompositionEnd: props.onCompositionEnd,\n onCompositionStart: props.onCompositionStart,\n onCompositionUpdate: props.onCompositionUpdate,\n\n // Selection events\n onSelect: props.onSelect,\n\n // Input events\n onBeforeInput: props.onBeforeInput,\n onInput: props.onInput,\n ...focusableProps,\n ...fieldProps,\n }),\n descriptionProps,\n errorMessageProps,\n isInvalid,\n validationErrors,\n validationDetails,\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2021 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 */\n\nimport { AriaTextFieldProps } from '../../react-types/textfield';\nimport { mergeProps, useEffectEvent } from '../utils';\nimport { RefObject, useEffect, useRef } from 'react';\nimport { TextFieldAria, useTextField } from './useTextField';\n\ninterface FormattedTextFieldState {\n validate: (val: string) => boolean;\n setInputValue: (val: string) => void;\n}\n\nfunction supportsNativeBeforeInputEvent() {\n return (\n typeof window !== 'undefined' &&\n window.InputEvent &&\n // @ts-ignore\n typeof InputEvent.prototype.getTargetRanges === 'function'\n );\n}\n\nexport function useFormattedTextField(\n props: AriaTextFieldProps,\n state: FormattedTextFieldState,\n inputRef: RefObject<HTMLInputElement>\n): TextFieldAria {\n // All browsers implement the 'beforeinput' event natively except Firefox\n // (currently behind a flag as of Firefox 84). React's polyfill does not\n // run in all cases that the native event fires, e.g. when deleting text.\n // Use the native event if available so that we can prevent invalid deletions.\n // We do not attempt to polyfill this in Firefox since it would be very complicated,\n // the benefit of doing so is fairly minor, and it's going to be natively supported soon.\n let onBeforeInputFallback = useEffectEvent((e: InputEvent) => {\n let input = inputRef.current;\n\n // Compute the next value of the input if the event is allowed to proceed.\n // See https://www.w3.org/TR/input-events-2/#interface-InputEvent-Attributes for a full list of input types.\n let nextValue: string;\n switch (e.inputType) {\n case 'historyUndo':\n case 'historyRedo':\n // Explicitly allow undo/redo. e.data is null in this case, but there's no need to validate,\n // because presumably the input would have already been validated previously.\n return;\n case 'insertLineBreak':\n // Explicitly allow \"insertLineBreak\" event, to allow onSubmit for \"enter\" key. e.data is null in this case.\n return;\n case 'deleteContent':\n case 'deleteByCut':\n case 'deleteByDrag':\n nextValue = input.value.slice(0, input.selectionStart) + input.value.slice(input.selectionEnd);\n break;\n case 'deleteContentForward':\n // This is potentially incorrect, since the browser may actually delete more than a single UTF-16\n // character. In reality, a full Unicode grapheme cluster consisting of multiple UTF-16 characters\n // or code points may be deleted. However, in our currently supported locales, there are no such cases.\n // If we support additional locales in the future, this may need to change.\n nextValue =\n input.selectionEnd === input.selectionStart\n ? input.value.slice(0, input.selectionStart) + input.value.slice(input.selectionEnd + 1)\n : input.value.slice(0, input.selectionStart) + input.value.slice(input.selectionEnd);\n break;\n case 'deleteContentBackward':\n nextValue =\n input.selectionEnd === input.selectionStart\n ? input.value.slice(0, input.selectionStart - 1) + input.value.slice(input.selectionStart)\n : input.value.slice(0, input.selectionStart) + input.value.slice(input.selectionEnd);\n break;\n case 'deleteSoftLineBackward':\n case 'deleteHardLineBackward':\n nextValue = input.value.slice(input.selectionStart);\n break;\n default:\n if (e.data != null) {\n nextValue = input.value.slice(0, input.selectionStart) + e.data + input.value.slice(input.selectionEnd);\n }\n break;\n }\n\n // If we did not compute a value, or the new value is invalid, prevent the event\n // so that the browser does not update the input text, move the selection, or add to\n // the undo/redo stack.\n if (nextValue == null || !state.validate(nextValue)) {\n e.preventDefault();\n }\n });\n\n useEffect(() => {\n if (!supportsNativeBeforeInputEvent()) {\n return;\n }\n\n let input = inputRef.current;\n input.addEventListener('beforeinput', onBeforeInputFallback, false);\n return () => {\n input.removeEventListener('beforeinput', onBeforeInputFallback, false);\n };\n }, [inputRef, onBeforeInputFallback]);\n\n let onBeforeInput = !supportsNativeBeforeInputEvent()\n ? (e) => {\n let nextValue =\n e.target.value.slice(0, e.target.selectionStart) + e.data + e.target.value.slice(e.target.selectionEnd);\n\n if (!state.validate(nextValue)) {\n e.preventDefault();\n }\n }\n : null;\n\n let {\n labelProps,\n inputProps: textFieldProps,\n descriptionProps,\n errorMessageProps,\n ...validation\n } = useTextField(props, inputRef);\n\n let compositionStartState = useRef(null);\n return {\n inputProps: mergeProps(textFieldProps, {\n onBeforeInput,\n onCompositionStart() {\n // Chrome does not implement Input Events Level 2, which specifies the insertFromComposition\n // and deleteByComposition inputType values for the beforeinput event. These are meant to occur\n // at the end of a composition (e.g. Pinyin IME, Android auto correct, etc.), and crucially, are\n // cancelable. The insertCompositionText and deleteCompositionText input types are not cancelable,\n // nor would we want to cancel them because the input from the user is incomplete at that point.\n // In Safari, insertFromComposition/deleteFromComposition will fire, however, allowing us to cancel\n // the final composition result if it is invalid. As a fallback for Chrome and Firefox, which either\n // don't support Input Events Level 2, or beforeinput at all, we store the state of the input when\n // the compositionstart event fires, and undo the changes in compositionend (below) if it is invalid.\n // Unfortunately, this messes up the undo/redo stack, but until insertFromComposition/deleteByComposition\n // are implemented, there is no other way to prevent composed input.\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=1022204\n let { value, selectionStart, selectionEnd } = inputRef.current;\n compositionStartState.current = { value, selectionStart, selectionEnd };\n },\n onCompositionEnd() {\n if (!state.validate(inputRef.current.value)) {\n // Restore the input value in the DOM immediately so we can synchronously update the selection position.\n // But also update the value in React state as well so it is correct for future updates.\n let { value, selectionStart, selectionEnd } = compositionStartState.current;\n inputRef.current.value = value;\n inputRef.current.setSelectionRange(selectionStart, selectionEnd);\n state.setInputValue(value);\n }\n },\n }),\n labelProps,\n descriptionProps,\n errorMessageProps,\n ...validation,\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\ntype Assertiveness = 'assertive' | 'polite';\n\n/* Inspired by https://github.com/AlmeroSteyn/react-aria-live */\nconst LIVEREGION_TIMEOUT_DELAY = 7000;\n\nlet liveAnnouncer: LiveAnnouncer | null = null;\n\n/**\n * Announces the message using screen reader technology.\n */\nexport function announce(\n message: string,\n assertiveness: Assertiveness = 'assertive',\n timeout = LIVEREGION_TIMEOUT_DELAY\n) {\n if (!liveAnnouncer) {\n liveAnnouncer = new LiveAnnouncer();\n }\n\n liveAnnouncer.announce(message, assertiveness, timeout);\n}\n\n/**\n * Stops all queued announcements.\n */\nexport function clearAnnouncer(assertiveness: Assertiveness) {\n if (liveAnnouncer) {\n liveAnnouncer.clear(assertiveness);\n }\n}\n\n/**\n * Removes the announcer from the DOM.\n */\nexport function destroyAnnouncer() {\n if (liveAnnouncer) {\n liveAnnouncer.destroy();\n liveAnnouncer = null;\n }\n}\n\n// LiveAnnouncer is implemented using vanilla DOM, not React. That's because as of React 18\n// ReactDOM.render is deprecated, and the replacement, ReactDOM.createRoot is moved into a\n// subpath import `react-dom/client`. That makes it hard for us to support multiple React versions.\n// As a global API, we can't use portals without introducing a breaking API change. LiveAnnouncer\n// is simple enough to implement without React, so that's what we do here.\n// See this discussion for more details: https://github.com/reactwg/react-18/discussions/125#discussioncomment-2382638\nclass LiveAnnouncer {\n node: HTMLElement | null;\n assertiveLog: HTMLElement;\n politeLog: HTMLElement;\n\n constructor() {\n this.node = document.createElement('div');\n this.node.dataset.liveAnnouncer = 'true';\n // copied from VisuallyHidden\n Object.assign(this.node.style, {\n border: 0,\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(50%)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n width: '1px',\n whiteSpace: 'nowrap',\n });\n\n this.assertiveLog = this.createLog('assertive');\n this.node.appendChild(this.assertiveLog);\n\n this.politeLog = this.createLog('polite');\n this.node.appendChild(this.politeLog);\n\n document.body.prepend(this.node);\n }\n\n createLog(ariaLive: string) {\n let node = document.createElement('div');\n node.setAttribute('role', 'log');\n node.setAttribute('aria-live', ariaLive);\n node.setAttribute('aria-relevant', 'additions');\n return node;\n }\n\n destroy() {\n if (!this.node) {\n return;\n }\n\n document.body.removeChild(this.node);\n this.node = null;\n }\n\n announce(message: string, assertiveness = 'assertive', timeout = LIVEREGION_TIMEOUT_DELAY) {\n if (!this.node) {\n return;\n }\n\n let node = document.createElement('div');\n node.textContent = message;\n\n if (assertiveness === 'assertive') {\n this.assertiveLog.appendChild(node);\n } else {\n this.politeLog.appendChild(node);\n }\n\n if (message !== '') {\n setTimeout(() => {\n node.remove();\n }, timeout);\n }\n }\n\n clear(assertiveness: Assertiveness) {\n if (!this.node) {\n return;\n }\n\n if (!assertiveness || assertiveness === 'assertive') {\n this.assertiveLog.innerHTML = '';\n }\n\n if (!assertiveness || assertiveness === 'polite') {\n this.politeLog.innerHTML = '';\n }\n }\n}\n","import enUS from './en-US.json';\nimport frFR from './fr-FR.json';\n\nexport default {\n 'en-US': enUS,\n 'fr-FR': frFR,\n};\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { announce, clearAnnouncer } from '../live-announcer';\nimport { AriaButtonProps } from '../../react-types/button';\nimport { DOMAttributes, InputBase, RangeInputBase, Validation, ValueBase } from '../../react-types/shared';\n// @ts-ignore\nimport intlMessages from './intl';\nimport { useEffect, useRef } from 'react';\nimport { useEffectEvent, useGlobalListeners } from '../utils';\n\nimport { useMessageFormatter } from '../i18n';\n\nexport interface SpinButtonProps extends InputBase, Validation<number>, ValueBase<number>, RangeInputBase<number> {\n textValue?: string;\n onIncrement?: () => void;\n onIncrementPage?: () => void;\n onDecrement?: () => void;\n onDecrementPage?: () => void;\n onDecrementToMin?: () => void;\n onIncrementToMax?: () => void;\n}\n\nexport interface SpinbuttonAria {\n spinButtonProps: DOMAttributes;\n incrementButtonProps: AriaButtonProps;\n decrementButtonProps: AriaButtonProps;\n}\n\nexport function useSpinButton(props: SpinButtonProps): SpinbuttonAria {\n const _async = useRef<number>();\n let {\n value,\n textValue,\n minValue,\n maxValue,\n isDisabled,\n isReadOnly,\n isRequired,\n onIncrement,\n onIncrementPage,\n onDecrement,\n onDecrementPage,\n onDecrementToMin,\n onIncrementToMax,\n } = props;\n const format = useMessageFormatter(intlMessages);\n\n const clearAsync = () => clearTimeout(_async.current);\n\n // eslint-disable-next-line arrow-body-style\n useEffect(() => {\n return () => clearAsync();\n }, []);\n\n let onKeyDown = (e) => {\n if (e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || isReadOnly) {\n return;\n }\n\n switch (e.key) {\n case 'PageUp':\n if (onIncrementPage) {\n e.preventDefault();\n onIncrementPage?.();\n break;\n }\n // fallthrough!\n case 'ArrowUp':\n case 'Up':\n if (onIncrement) {\n e.preventDefault();\n onIncrement?.();\n }\n break;\n case 'PageDown':\n if (onDecrementPage) {\n e.preventDefault();\n onDecrementPage?.();\n break;\n }\n // fallthrough\n case 'ArrowDown':\n case 'Down':\n if (onDecrement) {\n e.preventDefault();\n onDecrement?.();\n }\n break;\n case 'Home':\n if (onDecrementToMin) {\n e.preventDefault();\n onDecrementToMin?.();\n }\n break;\n case 'End':\n if (onIncrementToMax) {\n e.preventDefault();\n onIncrementToMax?.();\n }\n break;\n }\n };\n\n let isFocused = useRef(false);\n let onFocus = () => {\n isFocused.current = true;\n };\n\n let onBlur = () => {\n isFocused.current = false;\n };\n\n // Replace Unicode hyphen-minus (U+002D) with minus sign (U+2212).\n // This ensures that macOS VoiceOver announces it as \"minus\" even with other characters between the minus sign\n // and the number (e.g. currency symbol). Otherwise it announces nothing because it assumes the character is a hyphen.\n // In addition, replace the empty string with the word \"Empty\" so that iOS VoiceOver does not read \"50%\" for an empty field.\n let ariaTextValue = textValue === '' ? format('Empty') : (textValue || `${value}`).replace('-', '\\u2212');\n\n useEffect(() => {\n if (isFocused.current) {\n clearAnnouncer('assertive');\n announce(ariaTextValue, 'assertive');\n }\n }, [ariaTextValue]);\n\n const onIncrementPressStart = useEffectEvent((initialStepDelay: number) => {\n clearAsync();\n onIncrement?.();\n // Start spinning after initial delay\n _async.current = window.setTimeout(() => {\n if (maxValue === undefined || isNaN(maxValue) || value === undefined || isNaN(value) || value < maxValue) {\n onIncrementPressStart(60);\n }\n }, initialStepDelay);\n });\n\n const onDecrementPressStart = useEffectEvent((initialStepDelay: number) => {\n clearAsync();\n onDecrement?.();\n // Start spinning after initial delay\n _async.current = window.setTimeout(() => {\n if (minValue === undefined || isNaN(minValue) || value === undefined || isNaN(value) || value > minValue) {\n onDecrementPressStart(60);\n }\n }, initialStepDelay);\n });\n\n let cancelContextMenu = (e) => {\n e.preventDefault();\n };\n\n let { addGlobalListener, removeAllGlobalListeners } = useGlobalListeners();\n\n return {\n spinButtonProps: {\n role: 'spinbutton',\n 'aria-valuenow': value !== undefined && !isNaN(value) ? value : undefined,\n 'aria-valuetext': ariaTextValue,\n 'aria-valuemin': minValue,\n 'aria-valuemax': maxValue,\n 'aria-disabled': isDisabled || undefined,\n 'aria-readonly': isReadOnly || undefined,\n 'aria-required': isRequired || undefined,\n onKeyDown,\n onFocus,\n onBlur,\n },\n incrementButtonProps: {\n onPressStart: () => {\n onIncrementPressStart(400);\n addGlobalListener(window, 'contextmenu', cancelContextMenu);\n },\n onPressEnd: () => {\n clearAsync();\n removeAllGlobalListeners();\n },\n onFocus,\n onBlur,\n },\n decrementButtonProps: {\n onPressStart: () => {\n onDecrementPressStart(400);\n addGlobalListener(window, 'contextmenu', cancelContextMenu);\n },\n onPressEnd: () => {\n clearAsync();\n removeAllGlobalListeners();\n },\n onFocus,\n onBlur,\n },\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport { AriaButtonProps } from '../../react-types/button';\nimport { AriaNumberFieldProps } from '../../react-types/numberfield';\nimport { chain, filterDOMProps, isAndroid, isIOS, isIPhone, mergeProps, useFormReset, useId } from '../utils';\nimport { DOMAttributes, GroupDOMAttributes, TextInputDOMProps, ValidationResult } from '../../react-types/shared';\nimport { InputHTMLAttributes, LabelHTMLAttributes, RefObject, useCallback, useMemo, useState } from 'react';\n// @ts-ignore\nimport intlMessages from './intl';\nimport { NumberFieldState } from '../../react-stately/numberfield';\nimport { privateValidationStateProp } from '../../react-stately/form';\nimport { useFocus, useFocusWithin, useScrollWheel } from '../interactions';\nimport { useFormattedTextField } from '../textfield';\nimport { useLocalizedStringFormatter, useNumberFormatter } from '../i18n';\nimport { useSpinButton } from '../spinbutton';\n\nexport interface NumberFieldAria extends ValidationResult {\n /** Props for the label element. */\n labelProps: LabelHTMLAttributes<HTMLLabelElement>;\n /** Props for the group wrapper around the input and stepper buttons. */\n groupProps: GroupDOMAttributes;\n /** Props for the input element. */\n inputProps: InputHTMLAttributes<HTMLInputElement>;\n /** Props for the increment button, to be passed to [useButton](useButton.html). */\n incrementButtonProps: AriaButtonProps;\n /** Props for the decrement button, to be passed to [useButton](useButton.html). */\n decrementButtonProps: AriaButtonProps;\n /** Props for the number field's description element, if any. */\n descriptionProps: DOMAttributes;\n /** Props for the number field's error message element, if any. */\n errorMessageProps: DOMAttributes;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a number field component.\n * Number fields allow users to enter a number, and increment or decrement the value using stepper buttons.\n */\nexport function useNumberField(\n props: AriaNumberFieldProps,\n state: NumberFieldState,\n inputRef: RefObject<HTMLInputElement | null>\n): NumberFieldAria {\n let {\n id,\n decrementAriaLabel,\n incrementAriaLabel,\n isDisabled,\n isReadOnly,\n isRequired,\n minValue,\n maxValue,\n autoFocus,\n label,\n formatOptions,\n onBlur = () => {},\n onFocus,\n onFocusChange,\n onKeyDown,\n onKeyUp,\n description,\n errorMessage,\n isWheelDisabled,\n ...otherProps\n } = props;\n\n let { increment, incrementToMax, decrement, decrementToMin, numberValue, inputValue, commit, commitValidation } =\n state;\n\n const stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/numberfield');\n\n let inputId = useId(id);\n let { focusProps } = useFocus({\n onBlur() {\n // Set input value to normalized valid value\n commit();\n },\n });\n\n let numberFormatter = useNumberFormatter(formatOptions);\n let intlOptions = useMemo(() => numberFormatter.resolvedOptions(), [numberFormatter]);\n\n // Replace negative textValue formatted using currencySign: 'accounting'\n // with a textValue that can be announced using a minus sign.\n let textValueFormatter = useNumberFormatter({ ...formatOptions, currencySign: undefined });\n let textValue = useMemo(\n () => (isNaN(numberValue) ? '' : textValueFormatter.format(numberValue)),\n [textValueFormatter, numberValue]\n );\n\n let {\n spinButtonProps,\n incrementButtonProps: incButtonProps,\n decrementButtonProps: decButtonProps,\n } = useSpinButton({\n isDisabled,\n isReadOnly,\n isRequired,\n maxValue,\n minValue,\n onIncrement: increment,\n onIncrementToMax: incrementToMax,\n onDecrement: decrement,\n onDecrementToMin: decrementToMin,\n value: numberValue,\n textValue,\n });\n\n let [focusWithin, setFocusWithin] = useState(false);\n let { focusWithinProps } = useFocusWithin({ isDisabled, onFocusWithinChange: setFocusWithin });\n\n let onWheel = useCallback(\n (e) => {\n // if on a trackpad, users can scroll in both X and Y at once, check the magnitude of the change\n // if it's mostly in the X direction, then just return, the user probably doesn't mean to inc/dec\n // this isn't perfect, events come in fast with small deltas and a part of the scroll may give a false indication\n // especially if the user is scrolling near 45deg\n if (Math.abs(e.deltaY) <= Math.abs(e.deltaX)) {\n return;\n }\n if (e.deltaY > 0) {\n increment();\n } else if (e.deltaY < 0) {\n decrement();\n }\n },\n [decrement, increment]\n );\n // If the input isn't supposed to receive input, disable scrolling.\n let scrollingDisabled = isWheelDisabled || isDisabled || isReadOnly || !focusWithin;\n useScrollWheel({ onScroll: onWheel, isDisabled: scrollingDisabled }, inputRef);\n\n // The inputMode attribute influences the software keyboard that is shown on touch devices.\n // Browsers and operating systems are quite inconsistent about what keys are available, however.\n // We choose between numeric and decimal based on whether we allow negative and fractional numbers,\n // and based on testing on various devices to determine what keys are available in each inputMode.\n let hasDecimals = (intlOptions.maximumFractionDigits ?? 0) > 0;\n let hasNegative = state.minValue === undefined || isNaN(state.minValue) || state.minValue < 0;\n let inputMode: TextInputDOMProps['inputMode'] = 'numeric';\n if (isIPhone()) {\n // iPhone doesn't have a minus sign in either numeric or decimal.\n // Note this is only for iPhone, not iPad, which always has both\n // minus and decimal in numeric.\n if (hasNegative) {\n inputMode = 'text';\n } else if (hasDecimals) {\n inputMode = 'decimal';\n }\n } else if (isAndroid()) {\n // Android numeric has both a decimal point and minus key.\n // decimal does not have a minus key.\n if (hasNegative) {\n inputMode = 'numeric';\n } else if (hasDecimals) {\n inputMode = 'decimal';\n }\n }\n\n let onChange = (value) => {\n if (state.validate(value)) {\n state.setInputValue(value);\n }\n };\n\n let domProps = filterDOMProps(props);\n let onKeyDownEnter = useCallback(\n (e) => {\n if (e.nativeEvent.isComposing) {\n return;\n }\n\n if (e.key === 'Enter') {\n commit();\n commitValidation();\n } else {\n e.continuePropagation();\n }\n },\n [commit, commitValidation]\n );\n\n let { isInvalid, validationErrors, validationDetails } = state.displayValidation;\n let {\n labelProps,\n inputProps: textFieldProps,\n descriptionProps,\n errorMessageProps,\n } = useFormattedTextField(\n {\n ...otherProps,\n ...domProps,\n // These props are added to a hidden input rather than the formatted textfield.\n name: undefined,\n form: undefined,\n label,\n autoFocus,\n isDisabled,\n isReadOnly,\n isRequired,\n validate: undefined,\n [privateValidationStateProp]: state,\n value: inputValue,\n defaultValue: '!', // an invalid value so that form reset is ignored in onChange above\n autoComplete: 'off',\n 'aria-label': props['aria-label'] || undefined,\n 'aria-labelledby': props['aria-labelledby'] || undefined,\n id: inputId,\n type: 'text', // Can't use type=\"number\" because then we can't have things like $ in the field.\n inputMode,\n onChange,\n onBlur,\n onFocus,\n onFocusChange,\n onKeyDown: useMemo(() => chain(onKeyDownEnter, onKeyDown), [onKeyDownEnter, onKeyDown]),\n onKeyUp,\n description,\n errorMessage,\n },\n state,\n inputRef\n );\n\n useFormReset(inputRef, state.defaultNumberValue, state.setNumberValue);\n\n let inputProps: InputHTMLAttributes<HTMLInputElement> = mergeProps(spinButtonProps, focusProps, textFieldProps, {\n // override the spinbutton role, we can't focus a spin button with VO\n role: null,\n // ignore aria-roledescription on iOS so that required state will announce when it is present\n 'aria-roledescription': !isIOS() ? stringFormatter.format('numberField') : null,\n 'aria-valuemax': null,\n 'aria-valuemin': null,\n 'aria-valuenow': null,\n 'aria-valuetext': null,\n autoCorrect: 'off',\n spellCheck: 'false',\n });\n\n if (props.validationBehavior === 'native') {\n inputProps['aria-required'] = undefined;\n }\n\n let onButtonPressStart = (e) => {\n // If focus is already on the input, keep it there so we don't hide the\n // software keyboard when tapping the increment/decrement buttons.\n if (document.activeElement === inputRef.current) {\n return;\n }\n\n // Otherwise, when using a mouse, move focus to the input.\n // On touch, or with a screen reader, focus the button so that the software\n // keyboard does not appear and the screen reader cursor is not moved off the button.\n if (e.pointerType === 'mouse') {\n inputRef.current?.focus();\n } else {\n e.target.focus();\n }\n };\n\n // Determine the label for the increment and decrement buttons. There are 4 cases:\n //\n // 1. With a visible label that is a string: aria-label: `Increase ${props.label}`\n // 2. With a visible label that is JSX: aria-label: 'Increase', aria-labelledby: '${incrementId} ${labelId}'\n // 3. With an aria-label: aria-label: `Increase ${props['aria-label']}`\n // 4. With an aria-labelledby: aria-label: 'Increase', aria-labelledby: `${incrementId} ${props['aria-labelledby']}`\n //\n // (1) and (2) could possibly be combined and both use aria-labelledby. However, placing the label in\n // the aria-label string rather than using aria-labelledby gives more flexibility to translators to change\n // the order or add additional words around the label if needed.\n let fieldLabel = props['aria-label'] || (typeof props.label === 'string' ? props.label : '');\n let ariaLabelledby: string | undefined;\n if (!fieldLabel) {\n ariaLabelledby = props.label != null ? labelProps.id : props['aria-labelledby'];\n }\n\n let incrementId = useId();\n let decrementId = useId();\n\n let incrementButtonProps: AriaButtonProps = mergeProps(incButtonProps, {\n 'aria-label': incrementAriaLabel || stringFormatter.format('increase', { fieldLabel }).trim(),\n id: ariaLabelledby && !incrementAriaLabel ? incrementId : null,\n 'aria-labelledby': ariaLabelledby && !incrementAriaLabel ? `${incrementId} ${ariaLabelledby}` : null,\n 'aria-controls': inputId,\n excludeFromTabOrder: true,\n preventFocusOnPress: true,\n allowFocusWhenDisabled: true,\n isDisabled: !state.canIncrement,\n onPressStart: onButtonPressStart,\n });\n\n let decrementButtonProps: AriaButtonProps = mergeProps(decButtonProps, {\n 'aria-label': decrementAriaLabel || stringFormatter.format('decrease', { fieldLabel }).trim(),\n id: ariaLabelledby && !decrementAriaLabel ? decrementId : null,\n 'aria-labelledby': ariaLabelledby && !decrementAriaLabel ? `${decrementId} ${ariaLabelledby}` : null,\n 'aria-controls': inputId,\n excludeFromTabOrder: true,\n preventFocusOnPress: true,\n allowFocusWhenDisabled: true,\n isDisabled: !state.canDecrement,\n onPressStart: onButtonPressStart,\n });\n\n return {\n groupProps: {\n ...focusWithinProps,\n role: 'group',\n 'aria-disabled': isDisabled,\n 'aria-invalid': isInvalid ? 'true' : undefined,\n },\n labelProps,\n inputProps,\n incrementButtonProps,\n decrementButtonProps,\n errorMessageProps,\n descriptionProps,\n isInvalid,\n validationErrors,\n validationDetails,\n };\n}\n","/* eslint-disable prefer-const */\n// @ts-nocheck\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 */\n\nimport {\n AnchorHTMLAttributes,\n ButtonHTMLAttributes,\n ElementType,\n HTMLAttributes,\n InputHTMLAttributes,\n RefObject,\n} from 'react';\nimport { AriaButtonProps } from '../../react-types/button';\nimport { DOMAttributes } from '../../react-types/shared';\nimport { filterDOMProps, mergeProps } from '../utils';\nimport { useFocusable } from '../focus';\nimport { usePress } from '../interactions';\n\nexport interface AriaButtonOptions<E extends ElementType> extends Omit<AriaButtonProps<E>, 'children'> {}\n\nexport interface ButtonAria<T> {\n /** Props for the button element. */\n buttonProps: T;\n /** Whether the button is currently pressed. */\n isPressed: boolean;\n}\n\n// Order with overrides is important: 'button' should be default\nexport function useButton(\n props: AriaButtonOptions<'button'>,\n ref: RefObject<HTMLButtonElement>\n): ButtonAria<ButtonHTMLAttributes<HTMLButtonElement>>;\nexport function useButton(\n props: AriaButtonOptions<'a'>,\n ref: RefObject<HTMLAnchorElement>\n): ButtonAria<AnchorHTMLAttributes<HTMLAnchorElement>>;\nexport function useButton(\n props: AriaButtonOptions<'div'>,\n ref: RefObject<HTMLDivElement>\n): ButtonAria<HTMLAttributes<HTMLDivElement>>;\nexport function useButton(\n props: AriaButtonOptions<'input'>,\n ref: RefObject<HTMLInputElement>\n): ButtonAria<InputHTMLAttributes<HTMLInputElement>>;\nexport function useButton(\n props: AriaButtonOptions<'span'>,\n ref: RefObject<HTMLSpanElement>\n): ButtonAria<HTMLAttributes<HTMLSpanElement>>;\nexport function useButton(props: AriaButtonOptions<ElementType>, ref: RefObject<Element>): ButtonAria<DOMAttributes>;\n/**\n * Provides the behavior and accessibility implementation for a button component. Handles mouse, keyboard, and touch interactions,\n * focus behavior, and ARIA props for both native button elements and custom element types.\n * @param props - Props to be applied to the button.\n * @param ref - A ref to a DOM element for the button.\n */\nexport function useButton(props: AriaButtonOptions<ElementType>, ref: RefObject<any>): ButtonAria<HTMLAttributes<any>> {\n let {\n elementType = 'button',\n isDisabled,\n onPress,\n onPressStart,\n onPressEnd,\n onPressUp,\n onPressChange,\n // @ts-ignore - undocumented\n preventFocusOnPress,\n // @ts-ignore - undocumented\n allowFocusWhenDisabled,\n // @ts-ignore\n onClick: deprecatedOnClick,\n href,\n target,\n rel,\n type = 'button',\n } = props;\n let additionalProps;\n if (elementType === 'button') {\n additionalProps = {\n type,\n disabled: isDisabled,\n };\n } else {\n additionalProps = {\n role: 'button',\n tabIndex: isDisabled ? undefined : 0,\n href: elementType === 'a' && isDisabled ? undefined : href,\n target: elementType === 'a' ? target : undefined,\n type: elementType === 'input' ? type : undefined,\n disabled: elementType === 'input' ? isDisabled : undefined,\n 'aria-disabled': !isDisabled || elementType === 'input' ? undefined : isDisabled,\n rel: elementType === 'a' ? rel : undefined,\n };\n }\n\n let { pressProps, isPressed } = usePress({\n onPressStart,\n onPressEnd,\n onPressChange,\n onPress,\n onPressUp,\n isDisabled,\n preventFocusOnPress,\n ref,\n });\n\n let { focusableProps } = useFocusable(props, ref);\n if (allowFocusWhenDisabled) {\n focusableProps.tabIndex = isDisabled ? -1 : focusableProps.tabIndex;\n }\n let buttonProps = mergeProps(focusableProps, pressProps, filterDOMProps(props, { labelable: true }));\n\n return {\n isPressed, // Used to indicate press state for visual\n buttonProps: mergeProps(additionalProps, buttonProps, {\n 'aria-haspopup': props['aria-haspopup'],\n 'aria-expanded': props['aria-expanded'],\n 'aria-controls': props['aria-controls'],\n 'aria-pressed': props['aria-pressed'],\n onClick: (e) => {\n if (deprecatedOnClick) {\n deprecatedOnClick(e);\n console.warn('onClick is deprecated, please use onPress');\n }\n },\n }),\n };\n}\n","import styled, { css } from 'styled-components';\nimport { baseStyling } from '../shared';\nimport { StyledNumberFieldProps, NumberFieldVariant } from './types';\nimport { Theme } from '../../types';\n\n/**\n * Component style.\n */\nexport const StyledNumberField = styled.div<StyledNumberFieldProps>`\n height: fit-content;\n position: relative;\n width: fit-content;\n margin: 0;\n min-width: 0;\n padding: 0;\n ${baseStyling}\n\n border: 0;\n display: inline-flex;\n flex-direction: column;\n vertical-align: top;\n\n ${({ $hasLeftIcon, $hasContent, $isFocused, $isDisabled, $isInvalid, $isColored, $theme, $variant }) => css`\n ${$isDisabled\n ? css`\n pointer-events: none;\n `\n : ''}\n\n .redsift-number-field__label {\n font-family: var(--redsift-typography-input-text-font-family);\n font-size: var(--redsift-typography-input-text-font-size);\n font-weight: var(--redsift-typography-input-text-font-weight);\n line-height: var(--redsift-typography-input-text-line-height);\n left: ${$hasLeftIcon && !$hasContent ? '32px' : '0'};\n overflow: hidden;\n pointer-events: none;\n position: absolute;\n text-overflow: ellipsis;\n top: ${$hasContent ? '-8px' : '-5px'};\n transform-origin: top left;\n transition: color 200ms cubic-bezier(0, 0, 0.2, 1) 0ms, transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms,\n max-width 200ms cubic-bezier(0, 0, 0.2, 1) 0ms;\n white-space: nowrap;\n z-index: 1;\n\n ${!$hasContent\n ? css`\n max-width: calc(100% - 24px - 42px - ${$variant === NumberFieldVariant.underline ? '0px' : '14px'});\n transform: translate(${$variant === NumberFieldVariant.underline ? '0px' : '14px'}, 16px) scale(1);\n `\n : css`\n max-width: calc(133% - 32px - 42px - ${$variant === NumberFieldVariant.underline ? '0px' : '14px'});\n transform: translate(${$variant === NumberFieldVariant.underline ? '0px' : '14px'}, 1px) scale(0.733);\n `}\n\n ${$isDisabled\n ? css`\n color: var(--redsift-color-neutral-light-grey);\n `\n : $isInvalid\n ? css`\n color: var(--redsift-color-notifications-error-primary);\n `\n : $isFocused\n ? css`\n color: ${$isColored\n ? 'var(--redsift-color-primary-n)'\n : 'var(--redsift-color-notifications-question-primary)'};\n `\n : css`\n color: var(--redsift-color-neutral-${$theme === Theme.light ? 'x-dark-grey' : 'light-grey'});\n `}\n }\n\n .redsift-number-field__input-wrapper {\n align-items: flex-start;\n box-sizing: border-box;\n cursor: text;\n display: inline-flex;\n min-height: 42px;\n position: relative;\n width: 100%;\n }\n\n .redsift-number-field-input-wrapper__input {\n background: none;\n border: 0;\n box-sizing: content-box;\n display: flex;\n flex: 1 1 auto;\n font-family: var(--redsift-typography-input-text-font-family);\n font-size: var(--redsift-typography-input-text-font-size);\n font-weight: var(--redsift-typography-input-text-font-weight);\n line-height: var(--redsift-typography-input-text-line-height);\n min-width: 0;\n min-width: 100px;\n padding: 2px 0;\n width: auto;\n padding-bottom: 6px;\n ${$variant !== NumberFieldVariant.underline && !$hasLeftIcon\n ? css`\n padding-left: 16px;\n `\n : ''}\n padding-top: 10px;\n\n ${$isDisabled\n ? css`\n color: var(--redsift-color-neutral-light-grey);\n `\n : css`\n color: var(--redsift-color-neutral-${$theme === Theme.dark ? 'white' : 'x-dark-grey'});\n `}\n }\n\n .redsift-number-field-input-wrapper__input::placeholder {\n color: var(--redsift-color-neutral-mid-grey);\n }\n\n .redsift-number-field-input-wrapper__input:focus {\n outline: 0;\n }\n\n .redsift-number-field-input-wrapper__fieldset {\n border-style: solid;\n bottom: 0;\n left: 1px;\n margin: 0;\n min-width: 0%;\n overflow: hidden;\n padding: 0 8px;\n pointer-events: none;\n position: absolute;\n right: 0;\n text-align: left;\n top: -5px;\n\n ${$variant === NumberFieldVariant.underline\n ? css`\n border-bottom-width: 2px;\n `\n : css`\n border-radius: 4px;\n border-width: 2px;\n `}\n\n ${$isDisabled\n ? css`\n border-color: var(--redsift-color-neutral-light-grey);\n `\n : $isInvalid\n ? css`\n border-color: var(--redsift-color-notifications-error-primary);\n `\n : $isFocused\n ? css`\n border-color: ${$isColored\n ? 'var(--redsift-color-primary-n)'\n : 'var(--redsift-color-notifications-question-primary)'};\n `\n : css`\n border-color: var(--redsift-color-neutral-mid-grey);\n `}\n }\n\n .redsift-number-field-input-wrapper-fieldset__legend {\n display: block;\n float: unset;\n font-size: 11px;\n height: 11px;\n overflow: hidden;\n padding: 0;\n visibility: hidden;\n white-space: nowrap;\n width: auto;\n\n ${!$hasContent\n ? css`\n max-width: 0.01px;\n transition: max-width 50ms cubic-bezier(0, 0, 0.2, 1) 0ms;\n `\n : css`\n max-width: calc(100% - 42px);\n transition: max-width 100ms cubic-bezier(0, 0, 0.2, 1) 50ms;\n `}\n }\n\n .redsift-number-field-input-wrapper-fieldset__legend > span {\n display: inline-block;\n opacity: 0;\n padding-left: 5px;\n padding-right: 5px;\n visibility: visible;\n }\n\n .redsift-icon-button {\n padding: 2px;\n }\n\n .redsift-number-field-input-wrapper__toolbar {\n > button {\n height: 21px;\n width: 42px;\n ${$isDisabled\n ? css`\n border-color: var(--redsift-color-neutral-light-grey);\n `\n : $isInvalid\n ? css`\n border-color: var(--redsift-color-notifications-error-primary);\n `\n : $isFocused\n ? css`\n border-color: ${$isColored\n ? 'var(--redsift-color-primary-n)'\n : 'var(--redsift-color-notifications-question-primary)'};\n `\n : css`\n border-color: var(--redsift-color-neutral-mid-grey);\n `}\n }\n\n .redsift-number-field-input-wrapper-toolbar__increment-button {\n border-top-width: 0;\n border-right-width: 0;\n border-bottom-width: 1px;\n border-left-width: 2px;\n border-top-left-radius: 0;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n .redsift-number-field-input-wrapper-toolbar__decrement-button {\n border-top-width: 1px;\n border-right-width: 0;\n border-bottom-width: 0;\n border-left-width: 2px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 0;\n }\n\n .redsift-number-field-input-wrapper-toolbar__increment-button--disabled,\n .redsift-number-field-input-wrapper-toolbar__decrement-button--disabled {\n background-color: rgba(0, 0, 0, 0.1);\n }\n\n .redsift-number-field-input-wrapper-toolbar__increment-button--disabled > .colored,\n .redsift-number-field-input-wrapper-toolbar__decrement-button--disabled > .colored {\n color: rgba(0, 0, 0, 0.5);\n }\n }\n\n ${$variant !== NumberFieldVariant.underline\n ? css`\n .redsift-icon.left {\n padding-left: 12px;\n padding-right: 8px;\n line-height: 28px;\n top: 10px;\n }\n `\n : css`\n .redsift-icon.left {\n padding-right: 8px;\n top: 10px;\n }\n `}\n `}\n`;\n","import React, { ComponentProps, forwardRef, MutableRefObject, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { useFocusRing } from '../../react-aria/react-aria/focus';\nimport { useFocusWithin } from '../../react-aria/react-aria/interactions';\nimport { useNumberFieldState } from '../../react-aria/react-stately/numberfield';\nimport { useNumberField } from '../../react-aria/react-aria/numberfield';\nimport { useButton } from '../../react-aria/react-aria/button';\nimport { Comp, getStylingTransientProps } from '../../types';\nimport { warnIfNoAccessibleLabelFound } from '../../utils/warnIfNoAccessibleLabelFound';\nimport { NumberFieldProps, NumberFieldVariant } from './types';\nimport { StyledNumberField } from './styles';\nimport { Icon } from '../../components/icon';\nimport { mdiMenuDown, mdiMenuUp } from '@redsift/icons';\nimport { Flexbox } from '../flexbox';\nimport { useTheme } from '../theme';\nimport { StyledIconButton } from '../icon-button/styles';\nimport { useLocale } from '../../react-aria/react-aria/i18n';\n\nconst COMPONENT_NAME = 'NumberField';\nconst CLASSNAME = 'redsift-number-field';\n\n/**\n * The NumberField component.\n * Can be used as controlled or uncontrolled.\n */\nexport const NumberField: Comp<NumberFieldProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { transientProps, otherProps } = getStylingTransientProps(props);\n\n const {\n autoFocus,\n className,\n decrementAriaLabel,\n defaultValue,\n formatOptions,\n id,\n incrementAriaLabel,\n inputProps: propsInputProps,\n inputRef: propsInputRef,\n isColored = true,\n isDisabled,\n isInvalid,\n isReadOnly,\n isRequired,\n isWheelDisabled,\n label,\n leftIcon,\n maxValue,\n minValue,\n onBlur: onBlurProps,\n onChange: propsOnChange,\n onFocus: onFocusProps,\n onFocusChange,\n onKeyDown,\n onKeyUp,\n placeholder,\n step,\n theme: propsTheme,\n value,\n variant = NumberFieldVariant.default,\n ...forwardedProps\n } = otherProps;\n\n const numberFieldProps = {\n id,\n isDisabled,\n isReadOnly,\n isRequired,\n minValue,\n maxValue,\n step,\n autoFocus,\n label,\n formatOptions,\n onBlur: onBlurProps,\n onFocus: onFocusProps,\n onFocusChange,\n onKeyDown,\n onKeyUp,\n value,\n defaultValue,\n onChange: propsOnChange,\n };\n\n const theme = useTheme(propsTheme);\n\n const { locale } = useLocale();\n const state = useNumberFieldState({ locale, ...numberFieldProps });\n const _inputRef = React.useRef(null);\n const inputRef = propsInputRef ?? _inputRef;\n const { labelProps, groupProps, inputProps, incrementButtonProps, decrementButtonProps } = useNumberField(\n {\n decrementAriaLabel,\n incrementAriaLabel,\n isWheelDisabled,\n ...numberFieldProps,\n },\n state,\n inputRef\n );\n\n const incrementButtonRef = useRef<HTMLButtonElement>(null);\n const { buttonProps: incrementButtonForwardedProps } = useButton(incrementButtonProps, incrementButtonRef);\n const decrementButtonRef = useRef<HTMLButtonElement>(null);\n const { buttonProps: decrementButtonForwardedProps } = useButton(decrementButtonProps, decrementButtonRef);\n\n const {\n isFocusVisible,\n isFocused,\n focusProps: { onFocus, onBlur },\n } = useFocusRing({\n autoFocus,\n });\n const [isFocusWithin, setFocusWithin] = useState(Boolean(autoFocus));\n const { focusWithinProps } = useFocusWithin({\n onFocusWithinChange: (isFocusWithin) => setFocusWithin(isFocusWithin),\n });\n\n warnIfNoAccessibleLabelFound(props as ComponentProps<'label'>, [label], 'NumberField');\n\n return (\n <StyledNumberField\n {...forwardedProps}\n {...focusWithinProps}\n {...transientProps}\n $hasContent={\n isFocusWithin || Boolean(inputProps.value !== undefined && inputProps.value !== '') || Boolean(placeholder)\n }\n $hasLeftIcon={Boolean(leftIcon)}\n $isColored={isColored}\n $isDisabled={isDisabled}\n $isFocusVisible={isFocusVisible}\n $isInvalid={isInvalid || (isRequired && !(inputProps.value !== undefined))}\n $isRequired={isRequired}\n $isFocused={isFocused}\n $theme={theme}\n $variant={variant}\n className={classNames(NumberField.className, className)}\n ref={ref as MutableRefObject<HTMLDivElement>}\n >\n {label ? (\n <label {...labelProps} className={`${NumberField.className}__label`}>\n <span>{label}</span>\n </label>\n ) : null}\n <div className={`${NumberField.className}__input-wrapper`}>\n {leftIcon ? (\n <Icon color={isDisabled ? 'question' : 'black'} {...leftIcon} aria-hidden=\"true\" className=\"left\" />\n ) : null}\n <Flexbox {...groupProps} flexDirection=\"row\" gap=\"0\" width=\"100%\">\n <input\n {...propsInputProps}\n {...inputProps}\n onBlur={(event) => {\n onBlur?.(event);\n onBlurProps?.(event);\n inputProps.onBlur?.(event);\n }}\n onFocus={(event) => {\n onFocus?.(event);\n onFocusProps?.(event);\n inputProps.onFocus?.(event);\n }}\n placeholder={placeholder ? `${placeholder}` : undefined}\n className={`${NumberField.className}-input-wrapper__input`}\n ref={inputRef as MutableRefObject<HTMLInputElement>}\n width=\"100%\"\n />\n <Flexbox className={`${NumberField.className}-input-wrapper__toolbar`} flexDirection=\"column\" gap=\"0\">\n <StyledIconButton\n $color=\"grey\"\n $isActive={false}\n $isGradient={false}\n $isHovered={false}\n $isLoading={false}\n $variant={variant === NumberFieldVariant.underline ? 'unstyled' : 'secondary'}\n $theme={theme}\n {...incrementButtonForwardedProps}\n $isDisabled={isDisabled || incrementButtonForwardedProps.disabled}\n className={`${NumberField.className}-input-wrapper-toolbar__increment-button ${\n isDisabled || incrementButtonForwardedProps.disabled\n ? `${NumberField.className}-input-wrapper-toolbar__increment-button--disabled`\n : ''\n }`}\n >\n <Icon icon={mdiMenuUp} color={isDisabled ? undefined : 'grey'} />\n </StyledIconButton>\n <StyledIconButton\n $color=\"grey\"\n $isActive={false}\n $isGradient={false}\n $isHovered={false}\n $isLoading={false}\n $variant={variant === NumberFieldVariant.underline ? 'unstyled' : 'secondary'}\n $theme={theme}\n {...decrementButtonForwardedProps}\n $isDisabled={isDisabled || decrementButtonForwardedProps.disabled}\n className={`${NumberField.className}-input-wrapper-toolbar__decrement-button ${\n isDisabled || decrementButtonForwardedProps.disabled\n ? `${NumberField.className}-input-wrapper-toolbar__decrement-button--disabled`\n : ''\n }`}\n >\n <Icon icon={mdiMenuDown} color={isDisabled ? undefined : 'grey'} />\n </StyledIconButton>\n </Flexbox>\n </Flexbox>\n <fieldset aria-hidden=\"true\" className={`${NumberField.className}-input-wrapper__fieldset`}>\n <legend className={`${NumberField.className}-input-wrapper-fieldset__legend`}>\n {label ? <span>{label}</span> : null}\n </legend>\n </fieldset>\n </div>\n </StyledNumberField>\n );\n});\nNumberField.className = CLASSNAME;\nNumberField.displayName = COMPONENT_NAME;\n"],"names":["canUseDOM","Boolean","window","document","createElement","idsUpdaterMap","Map","useId","defaultId","value","setValue","useState","nextId","useRef","res","useSSRSafeId","updateValue","useCallback","val","current","set","useLayoutEffect","r","delete","useEffect","newId","mergeIds","idA","idB","setIdA","get","setIdB","useSlotId","depArray","arguments","length","undefined","id","resolvedId","setResolvedId","useValueEffect","updateId","getElementById","chain","_len","callbacks","Array","_key","callback","mergeProps","result","_objectSpread","i","props","key","a","b","charCodeAt","clsx","DOMPropNames","Set","labelablePropNames","linkPropNames","propRe","filterDOMProps","opts","labelable","isLink","propNames","filteredProps","prop","Object","prototype","hasOwnProperty","call","has","test","focusWithoutScrolling","element","supportsPreventScroll","focus","preventScroll","scrollableElements","getScrollableElements","restoreScrollPosition","supportsPreventScrollCached","focusElem","e","parent","parentNode","rootScrollingElement","scrollingElement","documentElement","HTMLElement","offsetHeight","scrollHeight","offsetWidth","scrollWidth","push","scrollTop","scrollLeft","openLink","target","modifiers","_window$event","_window$event$type","setOpening","metaKey","ctrlKey","altKey","shiftKey","isFirefox","event","type","startsWith","isMac","isWebKit","isIPad","process","env","NODE_ENV","KeyboardEvent","keyIdentifier","MouseEvent","bubbles","cancelable","isOpening","dispatchEvent","transitionsByElement","transitionCallbacks","setupGlobalEvents","isTransitionEvent","onTransitionStart","transitions","addEventListener","onTransitionEnd","once","add","propertyName","properties","size","removeEventListener","cb","clear","body","readyState","runAfterTransition","fn","requestAnimationFrame","useGlobalListeners","globalListeners","addGlobalListener","eventTarget","listener","options","removeGlobalListener","_globalListeners$curr","removeAllGlobalListeners","forEach","useLabels","defaultLabel","label","labelledBy","ids","trim","split","join","useSyncRef","context","ref","useEvent","handler","handleEvent","useEffectEvent","isDisabled","defaultValue","effect","nextRef","newValue","next","done","queue","useControlledState","onChange","stateValue","setStateValue","isControlledRef","isControlled","wasControlled","console","warn","currentValue","args","onChangeCaller","is","_len2","onChangeArgs","_key2","updateFunction","oldValue","_len3","functionArgs","_key3","interceptedValue","clamp","min","Infinity","max","Math","roundToStepPrecision","step","roundedValue","stepString","toString","pointIndex","indexOf","precision","pow","round","snapValueToStep","Number","remainder","isNaN","snappedValue","abs","sign","floor","useFormReset","initialValue","onReset","resetValue","handleReset","_ref$current","form","CURRENCY_SIGN_REGEX","RegExp","NUMBERING_SYSTEMS","NumberParser","constructor","locale","_defineProperty","parse","getNumberParserImpl","isValidPartialNumber","minValue","maxValue","getNumberingSystem","numberingSystem","numberParserCache","defaultParser","getCachedNumberParser","includes","parser","cacheKey","entries","sort","NumberParserImpl","_this$options$minimum","_this$options$maximum","formatter","Intl","NumberFormat","resolvedOptions","symbols","getSymbols","style","minimumFractionDigits","maximumFractionDigits","fullySanitizedValue","sanitize","group","replaceAll","decimal","replace","minusSign","numeral","index","isNegative","slice","NaN","_this$options$minimum2","_this$options$maximum2","NumberFormatter","format","currencySign","literals","String","fromCharCode","plusSign","nonLiteralParts","pluralNumbers","intlOptions","originalOptions","_allParts$find$value","_allParts$find","_posAllParts$find","_decimalParts$find","_allParts$find2","symbolFormatter","minimumSignificantDigits","maximumSignificantDigits","allParts","formatToParts","posAllParts","pluralParts","map","n","find","p","signDisplay","decimalParts","allPartsLiterals","filter","escapeRegex","pluralPartsLiterals","flatMap","sortedLiterals","numerals","useGrouping","reverse","indexes","d","str","string","state","savedUserSelect","modifiedElementMap","WeakMap","disableTextSelection","isIOS","documentObject","getOwnerDocument","webkitUserSelect","SVGElement","userSelect","restoreTextSelection","setTimeout","targetOldUserSelect","getAttribute","removeAttribute","PressResponderContext","React","createContext","register","displayName","usePressResponderContext","useContext","contextProps","_objectWithoutProperties","_excluded","_shouldStopPropagation","PressEvent","pointerType","originalEvent","_state$target","_classPrivateFieldInitSpec","writable","currentTarget","rect","getBoundingClientRect","x","y","clientX","clientY","left","top","width","height","continuePropagation","_classPrivateFieldSet","shouldStopPropagation","_classPrivateFieldGet","LINK_CLICKED","Symbol","usePress","_usePressResponderCon","onPress","onPressChange","onPressStart","onPressEnd","onPressUp","isPressed","isPressedProp","preventFocusOnPress","shouldCancelOnPointerExit","allowTextSelectionOnPress","_","domProps","_excluded2","setPressed","ignoreEmulatedMouseEvents","ignoreClickAfterPress","didFirePressStart","isTriggeringEvent","activePointerId","isOverTarget","triggerPressStart","triggerPressEnd","wasPressed","triggerPressUp","cancel","createEvent","cancelOnPointerExit","pressProps","useMemo","onKeyDown","isValidKeyboardEvent","nativeEvent","contains","shouldPreventDefaultKeyboard","preventDefault","repeat","originalTarget","pressUp","onKeyUp","stopPropagation","_state$metaKeyEvents","metaKeyEvents","onClick","button","isVirtualClick","stopPressStart","stopPressUp","stopPressEnd","_state$metaKeyEvents3","_state$metaKeyEvents2","isHTMLAnchorLink","events","values","_state$target2","PointerEvent","onPointerDown","isVirtualPointerEvent","shouldPreventDefault","pointerId","onPointerMove","onPointerUp","onPointerCancel","onMouseDown","onDragStart","onMouseUp","onMouseEnter","onMouseLeave","onTouchStart","touch","getTouchFromEvent","identifier","createTouchEvent","getOwnerWindow","onScroll","onTouchMove","getTouchById","onTouchEnd","onTouchCancel","_ref$current$target","tagName","hasAttribute","code","role","HTMLInputElement","isValidInputKey","HTMLTextAreaElement","isContentEditable","targetTouches","changedTouches","getPointClientRect","point","offsetX","offsetY","radiusX","radiusY","right","bottom","areRectanglesOverlapping","pointRect","HTMLButtonElement","nonTextInputTypes","createEventHandler","isDefaultPrevented","error","useKeyboard","keyboardProps","useScrollWheel","onScrollHandler","deltaX","deltaY","focusSafely","ownerDocument","getInteractionModality","lastFocusedElement","activeElement","isConnected","FocusableContext","useFocusableContext","otherProps","useFocusable","domRef","focusProps","useFocus","interactions","interactionProps","autoFocusRef","autoFocus","focusableProps","tabIndex","excludeFromTabOrder","NumberFieldVariant","default","underline","VALID_VALIDITY_STATE","badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing","valid","CUSTOM_VALIDITY_STATE","DEFAULT_VALIDATION_RESULT","isInvalid","validationDetails","validationErrors","FormValidationContext","privateValidationStateProp","Date","now","useFormValidationState","realtimeValidation","displayValidation","updateValidation","resetValidation","commitValidation","useFormValidationStateImpl","_builtinValidation","validationState","name","builtinValidation","validate","validationBehavior","controlledError","clientError","getValidationResult","runValidate","serverErrors","serverErrorMessages","isArray","asArray","lastServerErrors","setLastServerErrors","isServerErrorCleared","setServerErrorCleared","serverError","nextValidation","currentValidity","setCurrentValidity","lastError","commitQueued","setCommitQueued","isEqualValidation","v","errors","every","_ref","k","useNumberFieldState","formatOptions","isReadOnly","numberValue","setNumberValue","inputValue","setInputValue","numberParser","validation","clampStep","prevValue","setPrevValue","prevLocale","setPrevLocale","prevFormatOptions","setPrevFormatOptions","parsedValue","commit","clampedValue","safeNextStep","operation","minMax","prev","handleDecimalOperation","increment","decrement","incrementToMax","decrementToMin","canIncrement","canDecrement","defaultNumberValue","operator","value1","value2","value1Decimal","value2Decimal","value1DecimalLength","value2DecimalLength","multiplier","enUS","frFR","useLabel","ariaLabelledby","ariaLabel","labelElementType","labelId","labelProps","htmlFor","fieldProps","useField","description","errorMessage","descriptionId","errorMessageId","descriptionProps","errorMessageProps","useFormValidation","setCustomValidity","title","getNativeValidity","onInvalid","defaultPrevented","getFirstInvalidInput","_ref$current2","setInteractionModality","input","getValidity","validity","validationMessage","elements","useTextField","inputElementType","isRequired","inputOnlyProps","pattern","defineProperty","configurable","inputProps","disabled","readOnly","required","autoComplete","autoCapitalize","maxLength","minLength","placeholder","inputMode","onCopy","onCut","onPaste","onCompositionEnd","onCompositionStart","onCompositionUpdate","onSelect","onBeforeInput","onInput","supportsNativeBeforeInputEvent","InputEvent","getTargetRanges","useFormattedTextField","inputRef","onBeforeInputFallback","nextValue","inputType","selectionStart","selectionEnd","data","_useTextField","textFieldProps","compositionStartState","setSelectionRange","LIVEREGION_TIMEOUT_DELAY","liveAnnouncer","announce","message","assertiveness","timeout","LiveAnnouncer","clearAnnouncer","node","dataset","assign","border","clip","clipPath","margin","overflow","padding","position","whiteSpace","assertiveLog","createLog","appendChild","politeLog","prepend","ariaLive","setAttribute","destroy","removeChild","textContent","remove","innerHTML","useSpinButton","_async","textValue","onIncrement","onIncrementPage","onDecrement","onDecrementPage","onDecrementToMin","onIncrementToMax","useMessageFormatter","intlMessages","clearAsync","clearTimeout","isFocused","onFocus","onBlur","ariaTextValue","onIncrementPressStart","initialStepDelay","onDecrementPressStart","cancelContextMenu","spinButtonProps","incrementButtonProps","decrementButtonProps","useNumberField","_intlOptions$maximumF","decrementAriaLabel","incrementAriaLabel","onFocusChange","isWheelDisabled","stringFormatter","useLocalizedStringFormatter","inputId","numberFormatter","useNumberFormatter","textValueFormatter","incButtonProps","decButtonProps","focusWithin","setFocusWithin","focusWithinProps","useFocusWithin","onFocusWithinChange","onWheel","scrollingDisabled","hasDecimals","hasNegative","isIPhone","isAndroid","onKeyDownEnter","isComposing","autoCorrect","spellCheck","onButtonPressStart","_inputRef$current","fieldLabel","incrementId","decrementId","allowFocusWhenDisabled","groupProps","useButton","elementType","deprecatedOnClick","href","rel","additionalProps","buttonProps","StyledNumberField","styled","div","baseStyling","$hasLeftIcon","$hasContent","$isFocused","$isDisabled","$isInvalid","$isColored","$theme","$variant","css","Theme","light","dark","COMPONENT_NAME","CLASSNAME","NumberField","forwardRef","transientProps","getStylingTransientProps","className","propsInputProps","propsInputRef","isColored","leftIcon","onBlurProps","propsOnChange","onFocusProps","theme","propsTheme","variant","forwardedProps","numberFieldProps","useTheme","useLocale","_inputRef","incrementButtonRef","incrementButtonForwardedProps","decrementButtonRef","decrementButtonForwardedProps","isFocusVisible","useFocusRing","isFocusWithin","warnIfNoAccessibleLabelFound","_extends","$isFocusVisible","$isRequired","classNames","Icon","color","Flexbox","flexDirection","gap","_inputProps$onBlur","_inputProps$onFocus","StyledIconButton","$color","$isActive","$isGradient","$isHovered","$isLoading","icon","mdiMenuUp","mdiMenuDown"],"mappings":"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K,CAACC,KAAK,GAAG,aAAa,GAAG,YAAa,CAAA;AACvG,UAAY,CAAA,CAAA;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAQH,EAAAA,QAAQ,KAAK1R,kBAAkB,CAACE,SAAS,IAAI,CAACiR,YAAY,GACxDQ,GAAI,CAAA;AACd;AACA,UAAA,CAAW,GACD,EAAG,CAAA;AACb;AACA;AACA,MAAQL,EAAAA,WAAW,GACTK,GAAI,CAAA;AACd;AACA,UAAA,CAAW,GACDA,GAAI,CAAA;AACd,+CAAiDF,EAAAA,MAAM,KAAKG,KAAK,CAACE,IAAI,GAAG,OAAO,GAAG,aAAc,CAAA;AACjG,UAAY,CAAA,CAAA;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAA,EAAQJ,QAAQ,KAAK1R,kBAAkB,CAACE,SAAS,GACvCyR,GAAI,CAAA;AACd;AACA,UAAA,CAAW,GACDA,GAAI,CAAA;AACd;AACA;AACA,UAAY,CAAA,CAAA;AACZ;AACA,MAAQL,EAAAA,WAAW,GACTK,GAAI,CAAA;AACd;AACA,UAAW,CAAA,GACDJ,UAAU,GACVI,GAAI,CAAA;AACd;AACA,UAAW,CAAA,GACDN,UAAU,GACVM,GAAI,CAAA;AACd,0BAAA,EAA4BH,UAAU,GACtB,gCAAgC,GAChC,qDAAsD,CAAA;AACtE,UAAA,CAAW,GACDG,GAAI,CAAA;AACd;AACA,UAAY,CAAA,CAAA;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAQ,EAAA,CAACP,WAAW,GACVO,GAAI,CAAA;AACd;AACA;AACA,UAAA,CAAW,GACDA,GAAI,CAAA;AACd;AACA;AACA,UAAY,CAAA,CAAA;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AAC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"}