@redsift/design-system 11.5.0 → 11.6.0-muiv5-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (710) hide show
  1. package/_virtual/_rollupPluginBabelHelpers.js +133 -0
  2. package/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  3. package/_virtual/jsx-runtime.js +4 -0
  4. package/_virtual/jsx-runtime.js.map +1 -0
  5. package/_virtual/react-jsx-runtime.development.js +4 -0
  6. package/_virtual/react-jsx-runtime.development.js.map +1 -0
  7. package/_virtual/react-jsx-runtime.production.min.js +4 -0
  8. package/_virtual/react-jsx-runtime.production.min.js.map +1 -0
  9. package/components/alert/Alert.d.ts +9 -0
  10. package/components/alert/Alert.js +117 -0
  11. package/components/alert/Alert.js.map +1 -0
  12. package/components/alert/intl/en-US.json.js +7 -0
  13. package/components/alert/intl/en-US.json.js.map +1 -0
  14. package/components/alert/intl/fr-FR.json.js +7 -0
  15. package/components/alert/intl/fr-FR.json.js.map +1 -0
  16. package/components/alert/intl/index.js +10 -0
  17. package/components/alert/intl/index.js.map +1 -0
  18. package/components/alert/styles.js +54 -0
  19. package/components/alert/styles.js.map +1 -0
  20. package/components/alert/types.d.ts +49 -0
  21. package/components/alert/types.js +20 -0
  22. package/components/alert/types.js.map +1 -0
  23. package/components/app-bar/AppBar.d.ts +9 -0
  24. package/components/app-bar/AppBar.js +95 -0
  25. package/components/app-bar/AppBar.js.map +1 -0
  26. package/components/app-bar/intl/en-US.json.js +9 -0
  27. package/components/app-bar/intl/en-US.json.js.map +1 -0
  28. package/components/app-bar/intl/fr-FR.json.js +9 -0
  29. package/components/app-bar/intl/fr-FR.json.js.map +1 -0
  30. package/components/app-bar/intl/index.js +10 -0
  31. package/components/app-bar/intl/index.js.map +1 -0
  32. package/components/app-bar/styles.js +139 -0
  33. package/components/app-bar/styles.js.map +1 -0
  34. package/components/app-bar/types.d.ts +31 -0
  35. package/components/app-container/AppContainer.d.ts +11 -0
  36. package/components/app-container/AppContainer.js +117 -0
  37. package/components/app-container/AppContainer.js.map +1 -0
  38. package/components/app-container/context.d.ts +6 -0
  39. package/components/app-container/context.js +6 -0
  40. package/components/app-container/context.js.map +1 -0
  41. package/components/app-container/styles.js +30 -0
  42. package/components/app-container/styles.js.map +1 -0
  43. package/components/app-container/types.d.ts +51 -0
  44. package/components/app-content/AppContent.d.ts +9 -0
  45. package/components/app-content/AppContent.js +42 -0
  46. package/components/app-content/AppContent.js.map +1 -0
  47. package/components/app-content/styles.js +54 -0
  48. package/components/app-content/styles.js.map +1 -0
  49. package/components/app-content/types.d.ts +19 -0
  50. package/components/app-side-panel/AppSidePanel.d.ts +9 -0
  51. package/components/app-side-panel/AppSidePanel.js +86 -0
  52. package/components/app-side-panel/AppSidePanel.js.map +1 -0
  53. package/components/app-side-panel/intl/en-US.json.js +9 -0
  54. package/components/app-side-panel/intl/en-US.json.js.map +1 -0
  55. package/components/app-side-panel/intl/fr-FR.json.js +9 -0
  56. package/components/app-side-panel/intl/fr-FR.json.js.map +1 -0
  57. package/components/app-side-panel/intl/index.js +10 -0
  58. package/components/app-side-panel/intl/index.js.map +1 -0
  59. package/components/app-side-panel/styles.js +183 -0
  60. package/components/app-side-panel/styles.js.map +1 -0
  61. package/components/app-side-panel/types.d.ts +39 -0
  62. package/components/app-side-panel/types.js +15 -0
  63. package/components/app-side-panel/types.js.map +1 -0
  64. package/components/app-side-panel/useAppSidePanel.d.ts +6 -0
  65. package/components/app-side-panel/useAppSidePanel.js +23 -0
  66. package/components/app-side-panel/useAppSidePanel.js.map +1 -0
  67. package/components/badge/Badge.d.ts +9 -0
  68. package/components/badge/Badge.js +44 -0
  69. package/components/badge/Badge.js.map +1 -0
  70. package/components/badge/styles.js +93 -0
  71. package/components/badge/styles.js.map +1 -0
  72. package/components/badge/types.d.ts +37 -0
  73. package/components/badge/types.js +14 -0
  74. package/components/badge/types.js.map +1 -0
  75. package/components/breadcrumb-item/BreadcrumbItem.d.ts +9 -0
  76. package/components/breadcrumb-item/BreadcrumbItem.js +47 -0
  77. package/components/breadcrumb-item/BreadcrumbItem.js.map +1 -0
  78. package/components/breadcrumb-item/styles.js +48 -0
  79. package/components/breadcrumb-item/styles.js.map +1 -0
  80. package/components/breadcrumb-item/types.d.ts +23 -0
  81. package/components/breadcrumbs/Breadcrumbs.d.ts +13 -0
  82. package/components/breadcrumbs/Breadcrumbs.js +61 -0
  83. package/components/breadcrumbs/Breadcrumbs.js.map +1 -0
  84. package/components/breadcrumbs/styles.js +38 -0
  85. package/components/breadcrumbs/styles.js.map +1 -0
  86. package/components/breadcrumbs/types.d.ts +19 -0
  87. package/components/button/Button.d.ts +13 -0
  88. package/components/button/Button.js +92 -0
  89. package/components/button/Button.js.map +1 -0
  90. package/components/button/styles.d.ts +20 -0
  91. package/components/button/styles.js +219 -0
  92. package/components/button/styles.js.map +1 -0
  93. package/components/button/types.d.ts +67 -0
  94. package/components/button/types.js +19 -0
  95. package/components/button/types.js.map +1 -0
  96. package/components/button-group/ButtonGroup.d.ts +9 -0
  97. package/components/button-group/ButtonGroup.js +67 -0
  98. package/components/button-group/ButtonGroup.js.map +1 -0
  99. package/components/button-group/styles.js +103 -0
  100. package/components/button-group/styles.js.map +1 -0
  101. package/components/button-group/types.d.ts +36 -0
  102. package/components/button-group/types.js +19 -0
  103. package/components/button-group/types.js.map +1 -0
  104. package/components/button-link/ButtonLink.d.ts +13 -0
  105. package/components/button-link/ButtonLink.js +85 -0
  106. package/components/button-link/ButtonLink.js.map +1 -0
  107. package/components/button-link/types.d.ts +18 -0
  108. package/components/card/Card.d.ts +13 -0
  109. package/components/card/Card.js +81 -0
  110. package/components/card/Card.js.map +1 -0
  111. package/components/card/intl/en-US.json.js +9 -0
  112. package/components/card/intl/en-US.json.js.map +1 -0
  113. package/components/card/intl/fr-FR.json.js +9 -0
  114. package/components/card/intl/fr-FR.json.js.map +1 -0
  115. package/components/card/intl/index.js +10 -0
  116. package/components/card/intl/index.js.map +1 -0
  117. package/components/card/styles.js +63 -0
  118. package/components/card/styles.js.map +1 -0
  119. package/components/card/types.d.ts +25 -0
  120. package/components/card-actions/CardActions.d.ts +9 -0
  121. package/components/card-actions/CardActions.js +33 -0
  122. package/components/card-actions/CardActions.js.map +1 -0
  123. package/components/card-actions/styles.js +15 -0
  124. package/components/card-actions/styles.js.map +1 -0
  125. package/components/card-actions/types.d.ts +11 -0
  126. package/components/card-body/CardBody.d.ts +9 -0
  127. package/components/card-body/CardBody.js +28 -0
  128. package/components/card-body/CardBody.js.map +1 -0
  129. package/components/card-body/styles.js +18 -0
  130. package/components/card-body/styles.js.map +1 -0
  131. package/components/card-body/types.d.ts +11 -0
  132. package/components/card-header/CardHeader.d.ts +9 -0
  133. package/components/card-header/CardHeader.js +56 -0
  134. package/components/card-header/CardHeader.js.map +1 -0
  135. package/components/card-header/styles.js +31 -0
  136. package/components/card-header/styles.js.map +1 -0
  137. package/components/card-header/types.d.ts +28 -0
  138. package/components/checkbox/Checkbox.d.ts +11 -0
  139. package/components/checkbox/Checkbox.js +135 -0
  140. package/components/checkbox/Checkbox.js.map +1 -0
  141. package/components/checkbox/styles.js +113 -0
  142. package/components/checkbox/styles.js.map +1 -0
  143. package/components/checkbox/types.d.ts +60 -0
  144. package/components/checkbox-group/CheckboxGroup.d.ts +10 -0
  145. package/components/checkbox-group/CheckboxGroup.js +101 -0
  146. package/components/checkbox-group/CheckboxGroup.js.map +1 -0
  147. package/components/checkbox-group/context.js +6 -0
  148. package/components/checkbox-group/context.js.map +1 -0
  149. package/components/checkbox-group/styles.js +78 -0
  150. package/components/checkbox-group/styles.js.map +1 -0
  151. package/components/checkbox-group/types.d.ts +72 -0
  152. package/components/checkbox-group/types.js +18 -0
  153. package/components/checkbox-group/types.js.map +1 -0
  154. package/components/conditional-wrapper/ConditionalWrapper.d.ts +6 -0
  155. package/components/conditional-wrapper/ConditionalWrapper.js +13 -0
  156. package/components/conditional-wrapper/ConditionalWrapper.js.map +1 -0
  157. package/components/conditional-wrapper/types.d.ts +10 -0
  158. package/components/detailed-card/DetailedCard.d.ts +15 -0
  159. package/components/detailed-card/DetailedCard.js +170 -0
  160. package/components/detailed-card/DetailedCard.js.map +1 -0
  161. package/components/detailed-card/intl/en-US.json.js +7 -0
  162. package/components/detailed-card/intl/en-US.json.js.map +1 -0
  163. package/components/detailed-card/intl/fr-FR.json.js +7 -0
  164. package/components/detailed-card/intl/fr-FR.json.js.map +1 -0
  165. package/components/detailed-card/intl/index.js +10 -0
  166. package/components/detailed-card/intl/index.js.map +1 -0
  167. package/components/detailed-card/styles.js +49 -0
  168. package/components/detailed-card/styles.js.map +1 -0
  169. package/components/detailed-card/types.d.ts +40 -0
  170. package/components/detailed-card-collapsible-section-items/DetailedCardCollapsibleSectionItems.d.ts +9 -0
  171. package/components/detailed-card-collapsible-section-items/DetailedCardCollapsibleSectionItems.js +33 -0
  172. package/components/detailed-card-collapsible-section-items/DetailedCardCollapsibleSectionItems.js.map +1 -0
  173. package/components/detailed-card-collapsible-section-items/styles.js +35 -0
  174. package/components/detailed-card-collapsible-section-items/styles.js.map +1 -0
  175. package/components/detailed-card-collapsible-section-items/types.d.ts +16 -0
  176. package/components/detailed-card-header/DetailedCardHeader.d.ts +9 -0
  177. package/components/detailed-card-header/DetailedCardHeader.js +45 -0
  178. package/components/detailed-card-header/DetailedCardHeader.js.map +1 -0
  179. package/components/detailed-card-header/styles.js +26 -0
  180. package/components/detailed-card-header/styles.js.map +1 -0
  181. package/components/detailed-card-header/types.d.ts +20 -0
  182. package/components/detailed-card-section/DetailedCardSection.d.ts +9 -0
  183. package/components/detailed-card-section/DetailedCardSection.js +90 -0
  184. package/components/detailed-card-section/DetailedCardSection.js.map +1 -0
  185. package/components/detailed-card-section/intl/en-US.json.js +9 -0
  186. package/components/detailed-card-section/intl/en-US.json.js.map +1 -0
  187. package/components/detailed-card-section/intl/fr-FR.json.js +9 -0
  188. package/components/detailed-card-section/intl/fr-FR.json.js.map +1 -0
  189. package/components/detailed-card-section/intl/index.js +10 -0
  190. package/components/detailed-card-section/intl/index.js.map +1 -0
  191. package/components/detailed-card-section/styles.js +69 -0
  192. package/components/detailed-card-section/styles.js.map +1 -0
  193. package/components/detailed-card-section/types.d.ts +27 -0
  194. package/components/detailed-card-section-item/DetailedCardSectionItem.d.ts +9 -0
  195. package/components/detailed-card-section-item/DetailedCardSectionItem.js +64 -0
  196. package/components/detailed-card-section-item/DetailedCardSectionItem.js.map +1 -0
  197. package/components/detailed-card-section-item/styles.js +34 -0
  198. package/components/detailed-card-section-item/styles.js.map +1 -0
  199. package/components/detailed-card-section-item/types.d.ts +35 -0
  200. package/components/flexbox/Flexbox.d.ts +9 -0
  201. package/components/flexbox/Flexbox.js +44 -0
  202. package/components/flexbox/Flexbox.js.map +1 -0
  203. package/components/flexbox/styles.js +54 -0
  204. package/components/flexbox/styles.js.map +1 -0
  205. package/components/flexbox/types.d.ts +24 -0
  206. package/components/focus-within-group/FocusWithinGroup.d.ts +41 -0
  207. package/components/focus-within-group/FocusWithinGroup.js +91 -0
  208. package/components/focus-within-group/FocusWithinGroup.js.map +1 -0
  209. package/components/focus-within-group/context.d.ts +7 -0
  210. package/components/focus-within-group/context.js +21 -0
  211. package/components/focus-within-group/context.js.map +1 -0
  212. package/components/focus-within-group/reducer.d.ts +5 -0
  213. package/components/focus-within-group/reducer.js +419 -0
  214. package/components/focus-within-group/reducer.js.map +1 -0
  215. package/components/focus-within-group/types.d.ts +143 -0
  216. package/components/focus-within-group/types.js +42 -0
  217. package/components/focus-within-group/types.js.map +1 -0
  218. package/components/focus-within-group/useFocusOnList.d.ts +5 -0
  219. package/components/focus-within-group/useFocusOnList.js +44 -0
  220. package/components/focus-within-group/useFocusOnList.js.map +1 -0
  221. package/components/focus-within-group/useFocusOnListItem.d.ts +39 -0
  222. package/components/focus-within-group/useFocusOnListItem.js +148 -0
  223. package/components/focus-within-group/useFocusOnListItem.js.map +1 -0
  224. package/components/gradient-border/index.d.ts +14 -0
  225. package/components/gradient-border/index.js +38 -0
  226. package/components/gradient-border/index.js.map +1 -0
  227. package/components/grid/Grid.d.ts +13 -0
  228. package/components/grid/Grid.js +45 -0
  229. package/components/grid/Grid.js.map +1 -0
  230. package/components/grid/styles.js +55 -0
  231. package/components/grid/styles.js.map +1 -0
  232. package/components/grid/types.d.ts +22 -0
  233. package/components/grid-item/GridItem.d.ts +9 -0
  234. package/components/grid-item/GridItem.js +28 -0
  235. package/components/grid-item/GridItem.js.map +1 -0
  236. package/components/grid-item/styles.js +16 -0
  237. package/components/grid-item/styles.js.map +1 -0
  238. package/components/grid-item/types.d.ts +11 -0
  239. package/components/heading/Heading.d.ts +9 -0
  240. package/components/heading/Heading.js +50 -0
  241. package/components/heading/Heading.js.map +1 -0
  242. package/components/heading/styles.js +67 -0
  243. package/components/heading/styles.js.map +1 -0
  244. package/components/heading/types.d.ts +62 -0
  245. package/components/heading/types.js +26 -0
  246. package/components/heading/types.js.map +1 -0
  247. package/components/icon/Icon.d.ts +10 -0
  248. package/components/icon/Icon.js +116 -0
  249. package/components/icon/Icon.js.map +1 -0
  250. package/components/icon/styles.js +84 -0
  251. package/components/icon/styles.js.map +1 -0
  252. package/components/icon/types.d.ts +57 -0
  253. package/components/icon/types.js +18 -0
  254. package/components/icon/types.js.map +1 -0
  255. package/components/icon-button/IconButton.d.ts +12 -0
  256. package/components/icon-button/IconButton.js +81 -0
  257. package/components/icon-button/IconButton.js.map +1 -0
  258. package/components/icon-button/styles.js +31 -0
  259. package/components/icon-button/styles.js.map +1 -0
  260. package/components/icon-button/types.d.ts +56 -0
  261. package/components/icon-button/types.js +19 -0
  262. package/components/icon-button/types.js.map +1 -0
  263. package/components/icon-button-link/IconButtonLink.d.ts +13 -0
  264. package/components/icon-button-link/IconButtonLink.js +76 -0
  265. package/components/icon-button-link/IconButtonLink.js.map +1 -0
  266. package/components/icon-button-link/types.d.ts +18 -0
  267. package/components/item/Item.d.ts +10 -0
  268. package/components/item/Item.js +225 -0
  269. package/components/item/Item.js.map +1 -0
  270. package/components/item/styles.d.ts +20 -0
  271. package/components/item/styles.js +129 -0
  272. package/components/item/styles.js.map +1 -0
  273. package/components/item/types.d.ts +59 -0
  274. package/components/item/useMenuItem.js +55 -0
  275. package/components/item/useMenuItem.js.map +1 -0
  276. package/components/link/Link.d.ts +14 -0
  277. package/components/link/Link.js +67 -0
  278. package/components/link/Link.js.map +1 -0
  279. package/components/link/styles.d.ts +15 -0
  280. package/components/link/styles.js +145 -0
  281. package/components/link/styles.js.map +1 -0
  282. package/components/link/types.d.ts +40 -0
  283. package/components/link-button/LinkButton.d.ts +13 -0
  284. package/components/link-button/LinkButton.js +66 -0
  285. package/components/link-button/LinkButton.js.map +1 -0
  286. package/components/link-button/types.d.ts +13 -0
  287. package/components/listbox/ActiveDescendantListbox.d.ts +8 -0
  288. package/components/listbox/ActiveDescendantListbox.js +74 -0
  289. package/components/listbox/ActiveDescendantListbox.js.map +1 -0
  290. package/components/listbox/Listbox.d.ts +10 -0
  291. package/components/listbox/Listbox.js +110 -0
  292. package/components/listbox/Listbox.js.map +1 -0
  293. package/components/listbox/RovingTabindexListbox.d.ts +8 -0
  294. package/components/listbox/RovingTabindexListbox.js +30 -0
  295. package/components/listbox/RovingTabindexListbox.js.map +1 -0
  296. package/components/listbox/context.d.ts +7 -0
  297. package/components/listbox/context.js +15 -0
  298. package/components/listbox/context.js.map +1 -0
  299. package/components/listbox/reducer.d.ts +5 -0
  300. package/components/listbox/reducer.js +45 -0
  301. package/components/listbox/reducer.js.map +1 -0
  302. package/components/listbox/styles.js +44 -0
  303. package/components/listbox/styles.js.map +1 -0
  304. package/components/listbox/types.d.ts +101 -0
  305. package/components/listbox/types.js +32 -0
  306. package/components/listbox/types.js.map +1 -0
  307. package/components/listbox/useListboxItem.d.ts +12 -0
  308. package/components/listbox/useListboxItem.js +90 -0
  309. package/components/listbox/useListboxItem.js.map +1 -0
  310. package/components/number/Number.d.ts +9 -0
  311. package/components/number/Number.js +105 -0
  312. package/components/number/Number.js.map +1 -0
  313. package/components/number/styles.js +10 -0
  314. package/components/number/styles.js.map +1 -0
  315. package/components/number/types.d.ts +63 -0
  316. package/components/number-field/NumberField.d.ts +10 -0
  317. package/components/number-field/NumberField.js +216 -0
  318. package/components/number-field/NumberField.js.map +1 -0
  319. package/components/number-field/styles.js +240 -0
  320. package/components/number-field/styles.js.map +1 -0
  321. package/components/number-field/types.d.ts +74 -0
  322. package/components/number-field/types.js +14 -0
  323. package/components/number-field/types.js.map +1 -0
  324. package/components/pill/Pill.d.ts +9 -0
  325. package/components/pill/Pill.js +93 -0
  326. package/components/pill/Pill.js.map +1 -0
  327. package/components/pill/styles.js +305 -0
  328. package/components/pill/styles.js.map +1 -0
  329. package/components/pill/types.d.ts +47 -0
  330. package/components/pill/types.js +15 -0
  331. package/components/pill/types.js.map +1 -0
  332. package/components/progress-bar/ProgressBar.d.ts +9 -0
  333. package/components/progress-bar/ProgressBar.js +35 -0
  334. package/components/progress-bar/ProgressBar.js.map +1 -0
  335. package/components/progress-bar/styles.js +38 -0
  336. package/components/progress-bar/styles.js.map +1 -0
  337. package/components/progress-bar/types.d.ts +20 -0
  338. package/components/radio/Radio.d.ts +11 -0
  339. package/components/radio/Radio.js +128 -0
  340. package/components/radio/Radio.js.map +1 -0
  341. package/components/radio/styles.js +113 -0
  342. package/components/radio/styles.js.map +1 -0
  343. package/components/radio/types.d.ts +58 -0
  344. package/components/radio-group/RadioGroup.d.ts +10 -0
  345. package/components/radio-group/RadioGroup.js +89 -0
  346. package/components/radio-group/RadioGroup.js.map +1 -0
  347. package/components/radio-group/context.js +6 -0
  348. package/components/radio-group/context.js.map +1 -0
  349. package/components/radio-group/styles.js +78 -0
  350. package/components/radio-group/styles.js.map +1 -0
  351. package/components/radio-group/types.d.ts +68 -0
  352. package/components/radio-group/types.js +18 -0
  353. package/components/radio-group/types.js.map +1 -0
  354. package/components/shared/styles.d.ts +17 -0
  355. package/components/shared/styles.js +250 -0
  356. package/components/shared/styles.js.map +1 -0
  357. package/components/shield/Shield.d.ts +9 -0
  358. package/components/shield/Shield.js +136 -0
  359. package/components/shield/Shield.js.map +1 -0
  360. package/components/shield/styles.js +71 -0
  361. package/components/shield/styles.js.map +1 -0
  362. package/components/shield/types.d.ts +52 -0
  363. package/components/shield/types.js +25 -0
  364. package/components/shield/types.js.map +1 -0
  365. package/components/side-navigation-menu/SideNavigationMenu.d.ts +9 -0
  366. package/components/side-navigation-menu/SideNavigationMenu.js +367 -0
  367. package/components/side-navigation-menu/SideNavigationMenu.js.map +1 -0
  368. package/components/side-navigation-menu/context.js +6 -0
  369. package/components/side-navigation-menu/context.js.map +1 -0
  370. package/components/side-navigation-menu/reducer.js +26 -0
  371. package/components/side-navigation-menu/reducer.js.map +1 -0
  372. package/components/side-navigation-menu/styles.js +196 -0
  373. package/components/side-navigation-menu/styles.js.map +1 -0
  374. package/components/side-navigation-menu/types.d.ts +72 -0
  375. package/components/side-navigation-menu/types.js +21 -0
  376. package/components/side-navigation-menu/types.js.map +1 -0
  377. package/components/side-navigation-menu-bar/SideNavigationMenuBar.d.ts +9 -0
  378. package/components/side-navigation-menu-bar/SideNavigationMenuBar.js +217 -0
  379. package/components/side-navigation-menu-bar/SideNavigationMenuBar.js.map +1 -0
  380. package/components/side-navigation-menu-bar/context.js +6 -0
  381. package/components/side-navigation-menu-bar/context.js.map +1 -0
  382. package/components/side-navigation-menu-bar/styles.js +89 -0
  383. package/components/side-navigation-menu-bar/styles.js.map +1 -0
  384. package/components/side-navigation-menu-bar/types.d.ts +65 -0
  385. package/components/side-navigation-menu-bar/types.js +22 -0
  386. package/components/side-navigation-menu-bar/types.js.map +1 -0
  387. package/components/side-navigation-menu-bar/useSideNavigationMenuBar.d.ts +9 -0
  388. package/components/side-navigation-menu-bar/useSideNavigationMenuBar.js +70 -0
  389. package/components/side-navigation-menu-bar/useSideNavigationMenuBar.js.map +1 -0
  390. package/components/side-navigation-menu-item/SideNavigationMenuItem.d.ts +9 -0
  391. package/components/side-navigation-menu-item/SideNavigationMenuItem.js +115 -0
  392. package/components/side-navigation-menu-item/SideNavigationMenuItem.js.map +1 -0
  393. package/components/side-navigation-menu-item/styles.js +174 -0
  394. package/components/side-navigation-menu-item/styles.js.map +1 -0
  395. package/components/side-navigation-menu-item/types.d.ts +51 -0
  396. package/components/skeleton/Skeleton.d.ts +15 -0
  397. package/components/skeleton/Skeleton.js +42 -0
  398. package/components/skeleton/Skeleton.js.map +1 -0
  399. package/components/skeleton/styles.js +84 -0
  400. package/components/skeleton/styles.js.map +1 -0
  401. package/components/skeleton/types.d.ts +18 -0
  402. package/components/skeleton-circle/SkeletonCircle.d.ts +9 -0
  403. package/components/skeleton-circle/SkeletonCircle.js +36 -0
  404. package/components/skeleton-circle/SkeletonCircle.js.map +1 -0
  405. package/components/skeleton-circle/styles.js +26 -0
  406. package/components/skeleton-circle/styles.js.map +1 -0
  407. package/components/skeleton-circle/types.d.ts +12 -0
  408. package/components/skeleton-text/SkeletonText.d.ts +9 -0
  409. package/components/skeleton-text/SkeletonText.js +42 -0
  410. package/components/skeleton-text/SkeletonText.js.map +1 -0
  411. package/components/skeleton-text/styles.js +39 -0
  412. package/components/skeleton-text/styles.js.map +1 -0
  413. package/components/skeleton-text/types.d.ts +36 -0
  414. package/components/skeleton-text/types.js +20 -0
  415. package/components/skeleton-text/types.js.map +1 -0
  416. package/components/spinner/Spinner.d.ts +9 -0
  417. package/components/spinner/Spinner.js +82 -0
  418. package/components/spinner/Spinner.js.map +1 -0
  419. package/components/spinner/images/spinner-grey-l1.svg.js +4 -0
  420. package/components/spinner/images/spinner-grey-l1.svg.js.map +1 -0
  421. package/components/spinner/images/spinner-grey-l2.svg.js +4 -0
  422. package/components/spinner/images/spinner-grey-l2.svg.js.map +1 -0
  423. package/components/spinner/images/spinner-grey-l3.svg.js +4 -0
  424. package/components/spinner/images/spinner-grey-l3.svg.js.map +1 -0
  425. package/components/spinner/images/spinner-primary-n.svg.js +4 -0
  426. package/components/spinner/images/spinner-primary-n.svg.js.map +1 -0
  427. package/components/spinner/intl/en-US.json.js +7 -0
  428. package/components/spinner/intl/en-US.json.js.map +1 -0
  429. package/components/spinner/intl/fr-FR.json.js +7 -0
  430. package/components/spinner/intl/fr-FR.json.js.map +1 -0
  431. package/components/spinner/intl/index.js +10 -0
  432. package/components/spinner/intl/index.js.map +1 -0
  433. package/components/spinner/styles.js +13 -0
  434. package/components/spinner/styles.js.map +1 -0
  435. package/components/spinner/types.d.ts +38 -0
  436. package/components/spinner/types.js +16 -0
  437. package/components/spinner/types.js.map +1 -0
  438. package/components/switch/Switch.d.ts +11 -0
  439. package/components/switch/Switch.js +137 -0
  440. package/components/switch/Switch.js.map +1 -0
  441. package/components/switch/styles.js +187 -0
  442. package/components/switch/styles.js.map +1 -0
  443. package/components/switch/types.d.ts +58 -0
  444. package/components/switch-group/SwitchGroup.d.ts +10 -0
  445. package/components/switch-group/SwitchGroup.js +101 -0
  446. package/components/switch-group/SwitchGroup.js.map +1 -0
  447. package/components/switch-group/context.js +6 -0
  448. package/components/switch-group/context.js.map +1 -0
  449. package/components/switch-group/styles.js +78 -0
  450. package/components/switch-group/styles.js.map +1 -0
  451. package/components/switch-group/types.d.ts +72 -0
  452. package/components/switch-group/types.js +18 -0
  453. package/components/switch-group/types.js.map +1 -0
  454. package/components/text/Text.d.ts +9 -0
  455. package/components/text/Text.js +51 -0
  456. package/components/text/Text.js.map +1 -0
  457. package/components/text/styles.js +112 -0
  458. package/components/text/styles.js.map +1 -0
  459. package/components/text/types.d.ts +73 -0
  460. package/components/text/types.js +34 -0
  461. package/components/text/types.js.map +1 -0
  462. package/components/text-area/TextArea.d.ts +10 -0
  463. package/components/text-area/TextArea.js +165 -0
  464. package/components/text-area/TextArea.js.map +1 -0
  465. package/components/text-area/styles.js +240 -0
  466. package/components/text-area/styles.js.map +1 -0
  467. package/components/text-area/types.d.ts +28 -0
  468. package/components/text-area/types.js +14 -0
  469. package/components/text-area/types.js.map +1 -0
  470. package/components/text-field/TextField.d.ts +10 -0
  471. package/components/text-field/TextField.js +197 -0
  472. package/components/text-field/TextField.js.map +1 -0
  473. package/components/text-field/intl/en-US.json.js +8 -0
  474. package/components/text-field/intl/en-US.json.js.map +1 -0
  475. package/components/text-field/intl/fr-FR.json.js +8 -0
  476. package/components/text-field/intl/fr-FR.json.js.map +1 -0
  477. package/components/text-field/intl/index.js +10 -0
  478. package/components/text-field/intl/index.js.map +1 -0
  479. package/components/text-field/styles.d.ts +22 -0
  480. package/components/text-field/styles.js +252 -0
  481. package/components/text-field/styles.js.map +1 -0
  482. package/components/text-field/types.d.ts +99 -0
  483. package/components/text-field/types.js +18 -0
  484. package/components/text-field/types.js.map +1 -0
  485. package/components/theme/context.d.ts +11 -0
  486. package/components/theme/context.js +7 -0
  487. package/components/theme/context.js.map +1 -0
  488. package/components/theme/useTheme.d.ts +5 -0
  489. package/components/theme/useTheme.js +13 -0
  490. package/components/theme/useTheme.js.map +1 -0
  491. package/hooks/useBoundingRect.d.ts +8 -0
  492. package/hooks/useBoundingRect.js +17 -0
  493. package/hooks/useBoundingRect.js.map +1 -0
  494. package/hooks/useComputeNumberOfRows.d.ts +15 -0
  495. package/hooks/useComputeNumberOfRows.js +40 -0
  496. package/hooks/useComputeNumberOfRows.js.map +1 -0
  497. package/hooks/useIsLoaded.d.ts +5 -0
  498. package/hooks/useIsLoaded.js +14 -0
  499. package/hooks/useIsLoaded.js.map +1 -0
  500. package/hooks/useWindowSize.d.ts +8 -0
  501. package/hooks/useWindowSize.js +42 -0
  502. package/hooks/useWindowSize.js.map +1 -0
  503. package/index.d.ts +157 -4667
  504. package/index.js +121 -24514
  505. package/index.js.map +1 -1
  506. package/package.json +4 -3
  507. package/packages/popovers/src/components/tooltip/Tooltip.js +62 -0
  508. package/packages/popovers/src/components/tooltip/Tooltip.js.map +1 -0
  509. package/packages/popovers/src/components/tooltip/context.js +6 -0
  510. package/packages/popovers/src/components/tooltip/context.js.map +1 -0
  511. package/packages/popovers/src/components/tooltip/types.js +28 -0
  512. package/packages/popovers/src/components/tooltip/types.js.map +1 -0
  513. package/packages/popovers/src/components/tooltip/useTooltip.js +78 -0
  514. package/packages/popovers/src/components/tooltip/useTooltip.js.map +1 -0
  515. package/packages/popovers/src/components/tooltip/useTooltipContext.js +13 -0
  516. package/packages/popovers/src/components/tooltip/useTooltipContext.js.map +1 -0
  517. package/packages/popovers/src/components/tooltip-content/TooltipContent.js +80 -0
  518. package/packages/popovers/src/components/tooltip-content/TooltipContent.js.map +1 -0
  519. package/packages/popovers/src/components/tooltip-content/styles.js +128 -0
  520. package/packages/popovers/src/components/tooltip-content/styles.js.map +1 -0
  521. package/packages/popovers/src/components/tooltip-trigger/TooltipTrigger.js +47 -0
  522. package/packages/popovers/src/components/tooltip-trigger/TooltipTrigger.js.map +1 -0
  523. package/react-aria/internationalized/date/DateFormatter.d.ts +25 -0
  524. package/react-aria/internationalized/date/DateFormatter.js +187 -0
  525. package/react-aria/internationalized/date/DateFormatter.js.map +1 -0
  526. package/react-aria/internationalized/message/MessageDictionary.d.ts +7 -0
  527. package/react-aria/internationalized/message/MessageDictionary.js +82 -0
  528. package/react-aria/internationalized/message/MessageDictionary.js.map +1 -0
  529. package/react-aria/internationalized/message/MessageFormatter.js +38 -0
  530. package/react-aria/internationalized/message/MessageFormatter.js.map +1 -0
  531. package/react-aria/internationalized/number/NumberFormatter.d.ts +6 -0
  532. package/react-aria/internationalized/number/NumberFormatter.js +222 -0
  533. package/react-aria/internationalized/number/NumberFormatter.js.map +1 -0
  534. package/react-aria/internationalized/number/NumberParser.js +288 -0
  535. package/react-aria/internationalized/number/NumberParser.js.map +1 -0
  536. package/react-aria/internationalized/string/LocalizedStringDictionary.d.ts +21 -0
  537. package/react-aria/internationalized/string/LocalizedStringDictionary.js +118 -0
  538. package/react-aria/internationalized/string/LocalizedStringDictionary.js.map +1 -0
  539. package/react-aria/internationalized/string/LocalizedStringFormatter.d.ts +21 -0
  540. package/react-aria/internationalized/string/LocalizedStringFormatter.js +70 -0
  541. package/react-aria/internationalized/string/LocalizedStringFormatter.js.map +1 -0
  542. package/react-aria/react-aria/button/useButton.js +95 -0
  543. package/react-aria/react-aria/button/useButton.js.map +1 -0
  544. package/react-aria/react-aria/focus/focusSafely.js +33 -0
  545. package/react-aria/react-aria/focus/focusSafely.js.map +1 -0
  546. package/react-aria/react-aria/focus/useFocusRing.js +57 -0
  547. package/react-aria/react-aria/focus/useFocusRing.js.map +1 -0
  548. package/react-aria/react-aria/focus/useFocusable.js +47 -0
  549. package/react-aria/react-aria/focus/useFocusable.js.map +1 -0
  550. package/react-aria/react-aria/form/useFormValidation.js +112 -0
  551. package/react-aria/react-aria/form/useFormValidation.js.map +1 -0
  552. package/react-aria/react-aria/i18n/context.d.ts +19 -0
  553. package/react-aria/react-aria/i18n/context.js +41 -0
  554. package/react-aria/react-aria/i18n/context.js.map +1 -0
  555. package/react-aria/react-aria/i18n/useCollator.d.ts +8 -0
  556. package/react-aria/react-aria/i18n/useCollator.js +25 -0
  557. package/react-aria/react-aria/i18n/useCollator.js.map +1 -0
  558. package/react-aria/react-aria/i18n/useDateFormatter.d.ts +13 -0
  559. package/react-aria/react-aria/i18n/useDateFormatter.js +39 -0
  560. package/react-aria/react-aria/i18n/useDateFormatter.js.map +1 -0
  561. package/react-aria/react-aria/i18n/useDefaultLocale.d.ts +10 -0
  562. package/react-aria/react-aria/i18n/useDefaultLocale.js +67 -0
  563. package/react-aria/react-aria/i18n/useDefaultLocale.js.map +1 -0
  564. package/react-aria/react-aria/i18n/useFilter.d.ts +15 -0
  565. package/react-aria/react-aria/i18n/useFilter.js +58 -0
  566. package/react-aria/react-aria/i18n/useFilter.js.map +1 -0
  567. package/react-aria/react-aria/i18n/useListFormatter.d.ts +8 -0
  568. package/react-aria/react-aria/i18n/useListFormatter.js +20 -0
  569. package/react-aria/react-aria/i18n/useListFormatter.js.map +1 -0
  570. package/react-aria/react-aria/i18n/useLocalizedStringFormatter.d.ts +15 -0
  571. package/react-aria/react-aria/i18n/useLocalizedStringFormatter.js +38 -0
  572. package/react-aria/react-aria/i18n/useLocalizedStringFormatter.js.map +1 -0
  573. package/react-aria/react-aria/i18n/useMessageFormatter.d.ts +13 -0
  574. package/react-aria/react-aria/i18n/useMessageFormatter.js +32 -0
  575. package/react-aria/react-aria/i18n/useMessageFormatter.js.map +1 -0
  576. package/react-aria/react-aria/i18n/useNumberFormatter.d.ts +10 -0
  577. package/react-aria/react-aria/i18n/useNumberFormatter.js +21 -0
  578. package/react-aria/react-aria/i18n/useNumberFormatter.js.map +1 -0
  579. package/react-aria/react-aria/i18n/utils.js +49 -0
  580. package/react-aria/react-aria/i18n/utils.js.map +1 -0
  581. package/react-aria/react-aria/interactions/context.js +20 -0
  582. package/react-aria/react-aria/interactions/context.js.map +1 -0
  583. package/react-aria/react-aria/interactions/createEventHandler.js +48 -0
  584. package/react-aria/react-aria/interactions/createEventHandler.js.map +1 -0
  585. package/react-aria/react-aria/interactions/textSelection.js +85 -0
  586. package/react-aria/react-aria/interactions/textSelection.js.map +1 -0
  587. package/react-aria/react-aria/interactions/useFocus.js +53 -0
  588. package/react-aria/react-aria/interactions/useFocus.js.map +1 -0
  589. package/react-aria/react-aria/interactions/useFocusVisible.js +236 -0
  590. package/react-aria/react-aria/interactions/useFocusVisible.js.map +1 -0
  591. package/react-aria/react-aria/interactions/useFocusWithin.js +65 -0
  592. package/react-aria/react-aria/interactions/useFocusWithin.js.map +1 -0
  593. package/react-aria/react-aria/interactions/useKeyboard.js +27 -0
  594. package/react-aria/react-aria/interactions/useKeyboard.js.map +1 -0
  595. package/react-aria/react-aria/interactions/usePress.js +769 -0
  596. package/react-aria/react-aria/interactions/usePress.js.map +1 -0
  597. package/react-aria/react-aria/interactions/useScrollWheel.js +31 -0
  598. package/react-aria/react-aria/interactions/useScrollWheel.js.map +1 -0
  599. package/react-aria/react-aria/interactions/utils.js +116 -0
  600. package/react-aria/react-aria/interactions/utils.js.map +1 -0
  601. package/react-aria/react-aria/label/useField.js +42 -0
  602. package/react-aria/react-aria/label/useField.js.map +1 -0
  603. package/react-aria/react-aria/label/useLabel.js +42 -0
  604. package/react-aria/react-aria/label/useLabel.js.map +1 -0
  605. package/react-aria/react-aria/live-announcer/LiveAnnouncer.js +121 -0
  606. package/react-aria/react-aria/live-announcer/LiveAnnouncer.js.map +1 -0
  607. package/react-aria/react-aria/numberfield/intl/en-US.json.js +11 -0
  608. package/react-aria/react-aria/numberfield/intl/en-US.json.js.map +1 -0
  609. package/react-aria/react-aria/numberfield/intl/fr-FR.json.js +11 -0
  610. package/react-aria/react-aria/numberfield/intl/fr-FR.json.js.map +1 -0
  611. package/react-aria/react-aria/numberfield/intl/index.js +10 -0
  612. package/react-aria/react-aria/numberfield/intl/index.js.map +1 -0
  613. package/react-aria/react-aria/numberfield/useNumberField.js +294 -0
  614. package/react-aria/react-aria/numberfield/useNumberField.js.map +1 -0
  615. package/react-aria/react-aria/spinbutton/intl/en-US.json.js +7 -0
  616. package/react-aria/react-aria/spinbutton/intl/en-US.json.js.map +1 -0
  617. package/react-aria/react-aria/spinbutton/intl/fr-FR.json.js +7 -0
  618. package/react-aria/react-aria/spinbutton/intl/fr-FR.json.js.map +1 -0
  619. package/react-aria/react-aria/spinbutton/intl/index.js +10 -0
  620. package/react-aria/react-aria/spinbutton/intl/index.js.map +1 -0
  621. package/react-aria/react-aria/spinbutton/useSpinButton.js +168 -0
  622. package/react-aria/react-aria/spinbutton/useSpinButton.js.map +1 -0
  623. package/react-aria/react-aria/ssr/SSRProvider.d.ts +22 -0
  624. package/react-aria/react-aria/ssr/SSRProvider.js +157 -0
  625. package/react-aria/react-aria/ssr/SSRProvider.js.map +1 -0
  626. package/react-aria/react-aria/textfield/useFormattedTextField.js +142 -0
  627. package/react-aria/react-aria/textfield/useFormattedTextField.js.map +1 -0
  628. package/react-aria/react-aria/textfield/useTextField.js +156 -0
  629. package/react-aria/react-aria/textfield/useTextField.js.map +1 -0
  630. package/react-aria/react-aria/utils/chain.js +33 -0
  631. package/react-aria/react-aria/utils/chain.js.map +1 -0
  632. package/react-aria/react-aria/utils/domHelpers.js +14 -0
  633. package/react-aria/react-aria/utils/domHelpers.js.map +1 -0
  634. package/react-aria/react-aria/utils/filterDOMProps.js +45 -0
  635. package/react-aria/react-aria/utils/filterDOMProps.js.map +1 -0
  636. package/react-aria/react-aria/utils/focusWithoutScrolling.js +88 -0
  637. package/react-aria/react-aria/utils/focusWithoutScrolling.js.map +1 -0
  638. package/react-aria/react-aria/utils/isVirtualEvent.js +51 -0
  639. package/react-aria/react-aria/utils/isVirtualEvent.js.map +1 -0
  640. package/react-aria/react-aria/utils/mergeProps.js +48 -0
  641. package/react-aria/react-aria/utils/mergeProps.js.map +1 -0
  642. package/react-aria/react-aria/utils/openLink.js +55 -0
  643. package/react-aria/react-aria/utils/openLink.js.map +1 -0
  644. package/react-aria/react-aria/utils/platform.js +69 -0
  645. package/react-aria/react-aria/utils/platform.js.map +1 -0
  646. package/react-aria/react-aria/utils/runAfterTransition.js +100 -0
  647. package/react-aria/react-aria/utils/runAfterTransition.js.map +1 -0
  648. package/react-aria/react-aria/utils/useDeepMemo.js +16 -0
  649. package/react-aria/react-aria/utils/useDeepMemo.js.map +1 -0
  650. package/react-aria/react-aria/utils/useEffectEvent.js +31 -0
  651. package/react-aria/react-aria/utils/useEffectEvent.js.map +1 -0
  652. package/react-aria/react-aria/utils/useEvent.js +21 -0
  653. package/react-aria/react-aria/utils/useEvent.js.map +1 -0
  654. package/react-aria/react-aria/utils/useFormReset.js +23 -0
  655. package/react-aria/react-aria/utils/useFormReset.js.map +1 -0
  656. package/react-aria/react-aria/utils/useGlobalListeners.js +44 -0
  657. package/react-aria/react-aria/utils/useGlobalListeners.js.map +1 -0
  658. package/react-aria/react-aria/utils/useId.js +86 -0
  659. package/react-aria/react-aria/utils/useId.js.map +1 -0
  660. package/react-aria/react-aria/utils/useLabels.js +39 -0
  661. package/react-aria/react-aria/utils/useLabels.js.map +1 -0
  662. package/react-aria/react-aria/utils/useLayoutEffect.js +21 -0
  663. package/react-aria/react-aria/utils/useLayoutEffect.js.map +1 -0
  664. package/react-aria/react-aria/utils/useSyncRef.js +29 -0
  665. package/react-aria/react-aria/utils/useSyncRef.js.map +1 -0
  666. package/react-aria/react-aria/utils/useValueEffect.js +52 -0
  667. package/react-aria/react-aria/utils/useValueEffect.js.map +1 -0
  668. package/react-aria/react-stately/form/useFormValidationState.js +191 -0
  669. package/react-aria/react-stately/form/useFormValidationState.js.map +1 -0
  670. package/react-aria/react-stately/numberfield/useNumberFieldState.js +196 -0
  671. package/react-aria/react-stately/numberfield/useNumberFieldState.js.map +1 -0
  672. package/react-aria/react-stately/utils/number.js +56 -0
  673. package/react-aria/react-stately/utils/number.js.map +1 -0
  674. package/react-aria/react-stately/utils/useControlledState.js +68 -0
  675. package/react-aria/react-stately/utils/useControlledState.js.map +1 -0
  676. package/react-aria/react-types/shared/locale.d.ts +3 -0
  677. package/types/colors.d.ts +102 -0
  678. package/types/colors.js +64 -0
  679. package/types/colors.js.map +1 -0
  680. package/types/fonts.d.ts +12 -0
  681. package/types/fonts.js +10 -0
  682. package/types/fonts.js.map +1 -0
  683. package/types/helpers.d.ts +23 -0
  684. package/types/products.d.ts +40 -0
  685. package/types/products.js +38 -0
  686. package/types/products.js.map +1 -0
  687. package/types/styles.d.ts +283 -0
  688. package/types/styles.js +161 -0
  689. package/types/styles.js.map +1 -0
  690. package/utils/filterComponents.d.ts +12 -0
  691. package/utils/filterComponents.js +24 -0
  692. package/utils/filterComponents.js.map +1 -0
  693. package/utils/getTextWidth.d.ts +6 -0
  694. package/utils/getTextWidth.js +32 -0
  695. package/utils/getTextWidth.js.map +1 -0
  696. package/utils/isComponent.d.ts +12 -0
  697. package/utils/isComponent.js +15 -0
  698. package/utils/isComponent.js.map +1 -0
  699. package/utils/partitionComponents.d.ts +10 -0
  700. package/utils/partitionComponents.js +26 -0
  701. package/utils/partitionComponents.js.map +1 -0
  702. package/utils/redsift-design-tokens.d.ts +1389 -0
  703. package/utils/redsift-design-tokens.js +1391 -0
  704. package/utils/redsift-design-tokens.js.map +1 -0
  705. package/utils/useId.d.ts +6 -0
  706. package/utils/useId.js +42 -0
  707. package/utils/useId.js.map +1 -0
  708. package/utils/warnIfNoAccessibleLabelFound.d.ts +11 -0
  709. package/utils/warnIfNoAccessibleLabelFound.js +20 -0
  710. package/utils/warnIfNoAccessibleLabelFound.js.map +1 -0
@@ -0,0 +1,288 @@
1
+ import { defineProperty as _defineProperty, objectSpread2 as _objectSpread2 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { NumberFormatter } from './NumberFormatter.js';
3
+
4
+ const CURRENCY_SIGN_REGEX = new RegExp('^.*\\(.*\\).*$');
5
+ const NUMBERING_SYSTEMS = ['latn', 'arab', 'hanidec'];
6
+
7
+ /**
8
+ * A NumberParser can be used to perform locale-aware parsing of numbers from Unicode strings,
9
+ * as well as validation of partial user input. It automatically detects the numbering system
10
+ * used in the input, and supports parsing decimals, percentages, currency values, and units
11
+ * according to the locale.
12
+ */
13
+ class NumberParser {
14
+ constructor(locale) {
15
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
16
+ _defineProperty(this, "locale", void 0);
17
+ _defineProperty(this, "options", void 0);
18
+ this.locale = locale;
19
+ this.options = options;
20
+ }
21
+
22
+ /**
23
+ * Parses the given string to a number. Returns NaN if a valid number could not be parsed.
24
+ */
25
+ parse(value) {
26
+ return getNumberParserImpl(this.locale, this.options, value).parse(value);
27
+ }
28
+
29
+ /**
30
+ * Returns whether the given string could potentially be a valid number. This should be used to
31
+ * validate user input as the user types. If a `minValue` or `maxValue` is provided, the validity
32
+ * of the minus/plus sign characters can be checked.
33
+ */
34
+ isValidPartialNumber(value, minValue, maxValue) {
35
+ return getNumberParserImpl(this.locale, this.options, value).isValidPartialNumber(value, minValue, maxValue);
36
+ }
37
+
38
+ /**
39
+ * Returns a numbering system for which the given string is valid in the current locale.
40
+ * If no numbering system could be detected, the default numbering system for the current
41
+ * locale is returned.
42
+ */
43
+ getNumberingSystem(value) {
44
+ return getNumberParserImpl(this.locale, this.options, value).options.numberingSystem;
45
+ }
46
+ }
47
+ const numberParserCache = new Map();
48
+ function getNumberParserImpl(locale, options, value) {
49
+ // First try the default numbering system for the provided locale
50
+ let defaultParser = getCachedNumberParser(locale, options);
51
+
52
+ // If that doesn't match, and the locale doesn't include a hard coded numbering system,
53
+ // try each of the other supported numbering systems until we find one that matches.
54
+ if (!locale.includes('-nu-') && !defaultParser.isValidPartialNumber(value)) {
55
+ for (let numberingSystem of NUMBERING_SYSTEMS) {
56
+ if (numberingSystem !== defaultParser.options.numberingSystem) {
57
+ let parser = getCachedNumberParser(locale + (locale.includes('-u-') ? '-nu-' : '-u-nu-') + numberingSystem, options);
58
+ if (parser.isValidPartialNumber(value)) {
59
+ return parser;
60
+ }
61
+ }
62
+ }
63
+ }
64
+ return defaultParser;
65
+ }
66
+ function getCachedNumberParser(locale, options) {
67
+ let cacheKey = locale + (options ? Object.entries(options).sort((a, b) => a[0] < b[0] ? -1 : 1).join() : '');
68
+ let parser = numberParserCache.get(cacheKey);
69
+ if (!parser) {
70
+ parser = new NumberParserImpl(locale, options);
71
+ numberParserCache.set(cacheKey, parser);
72
+ }
73
+ return parser;
74
+ }
75
+
76
+ // The actual number parser implementation. Instances of this class are cached
77
+ // based on the locale, options, and detected numbering system.
78
+ class NumberParserImpl {
79
+ constructor(locale) {
80
+ var _this$options$minimum, _this$options$maximum;
81
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
82
+ _defineProperty(this, "formatter", void 0);
83
+ _defineProperty(this, "options", void 0);
84
+ _defineProperty(this, "symbols", void 0);
85
+ _defineProperty(this, "locale", void 0);
86
+ this.locale = locale;
87
+ this.formatter = new Intl.NumberFormat(locale, options);
88
+ this.options = this.formatter.resolvedOptions();
89
+ this.symbols = getSymbols(locale, this.formatter, this.options, options);
90
+ if (this.options.style === 'percent' && (((_this$options$minimum = this.options.minimumFractionDigits) !== null && _this$options$minimum !== void 0 ? _this$options$minimum : 0) > 18 || ((_this$options$maximum = this.options.maximumFractionDigits) !== null && _this$options$maximum !== void 0 ? _this$options$maximum : 0) > 18)) {
91
+ console.warn('NumberParser cannot handle percentages with greater than 18 decimal places, please reduce the number in your options.');
92
+ }
93
+ }
94
+ parse(value) {
95
+ // 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'
96
+ let fullySanitizedValue = this.sanitize(value);
97
+ if (this.symbols.group) {
98
+ // Remove group characters, and replace decimal points and numerals with ASCII values.
99
+ fullySanitizedValue = replaceAll(fullySanitizedValue, this.symbols.group, '');
100
+ }
101
+ if (this.symbols.decimal) {
102
+ fullySanitizedValue = fullySanitizedValue.replace(this.symbols.decimal, '.');
103
+ }
104
+ if (this.symbols.minusSign) {
105
+ fullySanitizedValue = fullySanitizedValue.replace(this.symbols.minusSign, '-');
106
+ }
107
+ fullySanitizedValue = fullySanitizedValue.replace(this.symbols.numeral, this.symbols.index);
108
+ if (this.options.style === 'percent') {
109
+ // javascript is bad at dividing by 100 and maintaining the same significant figures, so perform it on the string before parsing
110
+ let isNegative = fullySanitizedValue.indexOf('-');
111
+ fullySanitizedValue = fullySanitizedValue.replace('-', '');
112
+ let index = fullySanitizedValue.indexOf('.');
113
+ if (index === -1) {
114
+ index = fullySanitizedValue.length;
115
+ }
116
+ fullySanitizedValue = fullySanitizedValue.replace('.', '');
117
+ if (index - 2 === 0) {
118
+ fullySanitizedValue = `0.${fullySanitizedValue}`;
119
+ } else if (index - 2 === -1) {
120
+ fullySanitizedValue = `0.0${fullySanitizedValue}`;
121
+ } else if (index - 2 === -2) {
122
+ fullySanitizedValue = '0.00';
123
+ } else {
124
+ fullySanitizedValue = `${fullySanitizedValue.slice(0, index - 2)}.${fullySanitizedValue.slice(index - 2)}`;
125
+ }
126
+ if (isNegative > -1) {
127
+ fullySanitizedValue = `-${fullySanitizedValue}`;
128
+ }
129
+ }
130
+ let newValue = fullySanitizedValue ? +fullySanitizedValue : NaN;
131
+ if (isNaN(newValue)) {
132
+ return NaN;
133
+ }
134
+ if (this.options.style === 'percent') {
135
+ var _this$options$minimum2, _this$options$maximum2;
136
+ // extra step for rounding percents to what our formatter would output
137
+ let options = _objectSpread2(_objectSpread2({}, this.options), {}, {
138
+ style: 'decimal',
139
+ minimumFractionDigits: Math.min(((_this$options$minimum2 = this.options.minimumFractionDigits) !== null && _this$options$minimum2 !== void 0 ? _this$options$minimum2 : 0) + 2, 20),
140
+ maximumFractionDigits: Math.min(((_this$options$maximum2 = this.options.maximumFractionDigits) !== null && _this$options$maximum2 !== void 0 ? _this$options$maximum2 : 0) + 2, 20)
141
+ });
142
+ return new NumberParser(this.locale, options).parse(new NumberFormatter(this.locale, options).format(newValue));
143
+ }
144
+
145
+ // 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
146
+ if (this.options.currencySign === 'accounting' && CURRENCY_SIGN_REGEX.test(value)) {
147
+ newValue = -1 * newValue;
148
+ }
149
+ return newValue;
150
+ }
151
+ sanitize(value) {
152
+ // Remove literals and whitespace, which are allowed anywhere in the string
153
+ value = value.replace(this.symbols.literals, '');
154
+
155
+ // Replace the ASCII minus sign with the minus sign used in the current locale
156
+ // so that both are allowed in case the user's keyboard doesn't have the locale's minus sign.
157
+ if (this.symbols.minusSign) {
158
+ value = value.replace('-', this.symbols.minusSign);
159
+ }
160
+
161
+ // In arab numeral system, their decimal character is 1643, but most keyboards don't type that
162
+ // instead they use the , (44) character or apparently the (1548) character.
163
+ if (this.options.numberingSystem === 'arab') {
164
+ if (this.symbols.decimal) {
165
+ value = value.replace(',', this.symbols.decimal);
166
+ value = value.replace(String.fromCharCode(1548), this.symbols.decimal);
167
+ }
168
+ if (this.symbols.group) {
169
+ value = replaceAll(value, '.', this.symbols.group);
170
+ }
171
+ }
172
+
173
+ // fr-FR group character is char code 8239, but that's not a key on the french keyboard,
174
+ // so allow 'period' as a group char and replace it with a space
175
+ if (this.options.locale === 'fr-FR') {
176
+ value = replaceAll(value, '.', String.fromCharCode(8239));
177
+ }
178
+ return value;
179
+ }
180
+ isValidPartialNumber(value) {
181
+ let minValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -Infinity;
182
+ let maxValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Infinity;
183
+ value = this.sanitize(value);
184
+
185
+ // Remove minus or plus sign, which must be at the start of the string.
186
+ if (this.symbols.minusSign && value.startsWith(this.symbols.minusSign) && minValue < 0) {
187
+ value = value.slice(this.symbols.minusSign.length);
188
+ } else if (this.symbols.plusSign && value.startsWith(this.symbols.plusSign) && maxValue > 0) {
189
+ value = value.slice(this.symbols.plusSign.length);
190
+ }
191
+
192
+ // Numbers cannot start with a group separator
193
+ if (this.symbols.group && value.startsWith(this.symbols.group)) {
194
+ return false;
195
+ }
196
+
197
+ // Numbers that can't have any decimal values fail if a decimal character is typed
198
+ if (this.symbols.decimal && value.indexOf(this.symbols.decimal) > -1 && this.options.maximumFractionDigits === 0) {
199
+ return false;
200
+ }
201
+
202
+ // Remove numerals, groups, and decimals
203
+ if (this.symbols.group) {
204
+ value = replaceAll(value, this.symbols.group, '');
205
+ }
206
+ value = value.replace(this.symbols.numeral, '');
207
+ if (this.symbols.decimal) {
208
+ value = value.replace(this.symbols.decimal, '');
209
+ }
210
+
211
+ // The number is valid if there are no remaining characters
212
+ return value.length === 0;
213
+ }
214
+ }
215
+ const nonLiteralParts = new Set(['decimal', 'fraction', 'integer', 'minusSign', 'plusSign', 'group']);
216
+
217
+ // This list is derived from https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html#comparison and includes
218
+ // all unique numbers which we need to check in order to determine all the plural forms for a given locale.
219
+ // See: https://github.com/adobe/react-spectrum/pull/5134/files#r1337037855 for used script
220
+ const pluralNumbers = [0, 4, 2, 1, 11, 20, 3, 7, 100, 21, 0.1, 1.1];
221
+ function getSymbols(locale, formatter, intlOptions, originalOptions) {
222
+ var _allParts$find$value, _allParts$find, _posAllParts$find, _decimalParts$find, _allParts$find2;
223
+ // formatter needs access to all decimal places in order to generate the correct literal strings for the plural set
224
+ let symbolFormatter = new Intl.NumberFormat(locale, _objectSpread2(_objectSpread2({}, intlOptions), {}, {
225
+ minimumSignificantDigits: 1,
226
+ maximumSignificantDigits: 21
227
+ }));
228
+ // Note: some locale's don't add a group symbol until there is a ten thousands place
229
+ let allParts = symbolFormatter.formatToParts(-10000.111);
230
+ let posAllParts = symbolFormatter.formatToParts(10000.111);
231
+ let pluralParts = pluralNumbers.map(n => symbolFormatter.formatToParts(n));
232
+ let minusSign = (_allParts$find$value = (_allParts$find = allParts.find(p => p.type === 'minusSign')) === null || _allParts$find === void 0 ? void 0 : _allParts$find.value) !== null && _allParts$find$value !== void 0 ? _allParts$find$value : '-';
233
+ let plusSign = (_posAllParts$find = posAllParts.find(p => p.type === 'plusSign')) === null || _posAllParts$find === void 0 ? void 0 : _posAllParts$find.value;
234
+
235
+ // Safari does not support the signDisplay option, but our number parser polyfills it.
236
+ // If no plus sign was returned, but the original options contained signDisplay, default to the '+' character.
237
+ // @ts-ignore
238
+ if (!plusSign && ((originalOptions === null || originalOptions === void 0 ? void 0 : originalOptions.signDisplay) === 'exceptZero' || (originalOptions === null || originalOptions === void 0 ? void 0 : originalOptions.signDisplay) === 'always')) {
239
+ plusSign = '+';
240
+ }
241
+
242
+ // If maximumSignificantDigits is 1 (the minimum) then we won't get decimal characters out of the above formatters
243
+ // Percent also defaults to 0 fractionDigits, so we need to make a new one that isn't percent to get an accurate decimal
244
+ let decimalParts = new Intl.NumberFormat(locale, _objectSpread2(_objectSpread2({}, intlOptions), {}, {
245
+ minimumFractionDigits: 2,
246
+ maximumFractionDigits: 2
247
+ })).formatToParts(0.001);
248
+ let decimal = (_decimalParts$find = decimalParts.find(p => p.type === 'decimal')) === null || _decimalParts$find === void 0 ? void 0 : _decimalParts$find.value;
249
+ let group = (_allParts$find2 = allParts.find(p => p.type === 'group')) === null || _allParts$find2 === void 0 ? void 0 : _allParts$find2.value;
250
+
251
+ // this set is also for a regex, it's all literals that might be in the string we want to eventually parse that
252
+ // don't contribute to the numerical value
253
+ let allPartsLiterals = allParts.filter(p => !nonLiteralParts.has(p.type)).map(p => escapeRegex(p.value));
254
+ let pluralPartsLiterals = pluralParts.flatMap(p => p.filter(p => !nonLiteralParts.has(p.type)).map(p => escapeRegex(p.value)));
255
+ let sortedLiterals = [...new Set([...allPartsLiterals, ...pluralPartsLiterals])].sort((a, b) => b.length - a.length);
256
+ let literals = sortedLiterals.length === 0 ? new RegExp('[\\p{White_Space}]', 'gu') : new RegExp(`${sortedLiterals.join('|')}|[\\p{White_Space}]`, 'gu');
257
+
258
+ // These are for replacing non-latn characters with the latn equivalent
259
+ let numerals = [...new Intl.NumberFormat(intlOptions.locale, {
260
+ useGrouping: false
261
+ }).format(9876543210)].reverse();
262
+ let indexes = new Map(numerals.map((d, i) => [d, i]));
263
+ let numeral = new RegExp(`[${numerals.join('')}]`, 'g');
264
+ let index = d => String(indexes.get(d));
265
+ return {
266
+ minusSign,
267
+ plusSign,
268
+ decimal,
269
+ group,
270
+ literals,
271
+ numeral,
272
+ index
273
+ };
274
+ }
275
+ function replaceAll(str, find, replace) {
276
+ // @ts-ignore
277
+ if (str.replaceAll) {
278
+ // @ts-ignore
279
+ return str.replaceAll(find, replace);
280
+ }
281
+ return str.split(find).join(replace);
282
+ }
283
+ function escapeRegex(string) {
284
+ return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
285
+ }
286
+
287
+ export { NumberParser };
288
+ //# sourceMappingURL=NumberParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberParser.js","sources":["../../../../src/react-aria/internationalized/number/NumberParser.ts"],"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 { 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"],"names":["CURRENCY_SIGN_REGEX","RegExp","NUMBERING_SYSTEMS","NumberParser","constructor","locale","options","arguments","length","undefined","_defineProperty","parse","value","getNumberParserImpl","isValidPartialNumber","minValue","maxValue","getNumberingSystem","numberingSystem","numberParserCache","Map","defaultParser","getCachedNumberParser","includes","parser","cacheKey","Object","entries","sort","a","b","join","get","NumberParserImpl","set","_this$options$minimum","_this$options$maximum","formatter","Intl","NumberFormat","resolvedOptions","symbols","getSymbols","style","minimumFractionDigits","maximumFractionDigits","console","warn","fullySanitizedValue","sanitize","group","replaceAll","decimal","replace","minusSign","numeral","index","isNegative","indexOf","slice","newValue","NaN","isNaN","_this$options$minimum2","_this$options$maximum2","_objectSpread","Math","min","NumberFormatter","format","currencySign","test","literals","String","fromCharCode","Infinity","startsWith","plusSign","nonLiteralParts","Set","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","type","signDisplay","decimalParts","allPartsLiterals","filter","has","escapeRegex","pluralPartsLiterals","flatMap","sortedLiterals","numerals","useGrouping","reverse","indexes","d","i","str","split","string"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { LocalizedString } from './LocalizedStringFormatter.js';
2
+
3
+ type LocalizedStrings<K extends string, T extends LocalizedString> = {
4
+ [lang: string]: Record<K, T>;
5
+ };
6
+ /**
7
+ * Stores a mapping of localized strings. Can be used to find the
8
+ * closest available string for a given locale.
9
+ */
10
+ declare class LocalizedStringDictionary<K extends string = string, T extends LocalizedString = string> {
11
+ private strings;
12
+ private defaultLocale;
13
+ constructor(messages: LocalizedStrings<K, T>, defaultLocale?: string);
14
+ /** Returns a localized string for the given key and locale. */
15
+ getStringForLocale(key: K, locale: string): T;
16
+ /** Returns all localized strings for the given locale. */
17
+ getStringsForLocale(locale: string): Record<K, T>;
18
+ static getGlobalDictionaryForPackage<K extends string = string, T extends LocalizedString = string>(packageName: string): LocalizedStringDictionary<K, T> | null;
19
+ }
20
+
21
+ export { LocalizedStringDictionary, LocalizedStrings };
@@ -0,0 +1,118 @@
1
+ import { defineProperty as _defineProperty } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
+
3
+ /* eslint-disable prefer-const */
4
+ // @ts-nocheck
5
+ /*
6
+ * Copyright 2022 Adobe. All rights reserved.
7
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License. You may obtain a copy
9
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software distributed under
12
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
13
+ * OF ANY KIND, either express or implied. See the License for the specific language
14
+ * governing permissions and limitations under the License.
15
+ */
16
+
17
+ const localeSymbol = Symbol.for('react-aria.i18n.locale');
18
+ const stringsSymbol = Symbol.for('react-aria.i18n.strings');
19
+ let cachedGlobalStrings = undefined;
20
+
21
+ /**
22
+ * Stores a mapping of localized strings. Can be used to find the
23
+ * closest available string for a given locale.
24
+ */
25
+ class LocalizedStringDictionary {
26
+ constructor(messages) {
27
+ let defaultLocale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';
28
+ _defineProperty(this, "strings", void 0);
29
+ _defineProperty(this, "defaultLocale", void 0);
30
+ // Clone messages so we don't modify the original object.
31
+ // Filter out entries with falsy values which may have been caused by applying optimize-locales-plugin.
32
+ this.strings = Object.fromEntries(Object.entries(messages).filter(_ref => {
33
+ let [, v] = _ref;
34
+ return v;
35
+ }));
36
+ this.defaultLocale = defaultLocale;
37
+ }
38
+
39
+ /** Returns a localized string for the given key and locale. */
40
+ getStringForLocale(key, locale) {
41
+ let strings = this.getStringsForLocale(locale);
42
+ let string = strings[key];
43
+ if (!string) {
44
+ throw new Error(`Could not find intl message ${key} in ${locale} locale`);
45
+ }
46
+ return string;
47
+ }
48
+
49
+ /** Returns all localized strings for the given locale. */
50
+ getStringsForLocale(locale) {
51
+ let strings = this.strings[locale];
52
+ if (!strings) {
53
+ strings = getStringsForLocale(locale, this.strings, this.defaultLocale);
54
+ this.strings[locale] = strings;
55
+ }
56
+ return strings;
57
+ }
58
+ static getGlobalDictionaryForPackage(packageName) {
59
+ var _cachedGlobalStrings;
60
+ if (typeof window === 'undefined') {
61
+ return null;
62
+ }
63
+ let locale = window[localeSymbol];
64
+ if (cachedGlobalStrings === undefined) {
65
+ let globalStrings = window[stringsSymbol];
66
+ if (!globalStrings) {
67
+ return null;
68
+ }
69
+ cachedGlobalStrings = {};
70
+ for (let pkg in globalStrings) {
71
+ cachedGlobalStrings[pkg] = new LocalizedStringDictionary({
72
+ [locale]: globalStrings[pkg]
73
+ }, locale);
74
+ }
75
+ }
76
+ let dictionary = (_cachedGlobalStrings = cachedGlobalStrings) === null || _cachedGlobalStrings === void 0 ? void 0 : _cachedGlobalStrings[packageName];
77
+ if (!dictionary) {
78
+ throw new Error(`Strings for package "${packageName}" were not included by LocalizedStringProvider. Please add it to the list passed to createLocalizedStringDictionary.`);
79
+ }
80
+ return dictionary;
81
+ }
82
+ }
83
+ function getStringsForLocale(locale, strings) {
84
+ let defaultLocale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'en-US';
85
+ // If there is an exact match, use it.
86
+ if (strings[locale]) {
87
+ return strings[locale];
88
+ }
89
+
90
+ // Attempt to find the closest match by language.
91
+ // For example, if the locale is fr-CA (French Canadian), but there is only
92
+ // an fr-FR (France) set of strings, use that.
93
+ // This could be replaced with Intl.LocaleMatcher once it is supported.
94
+ // https://github.com/tc39/proposal-intl-localematcher
95
+ let language = getLanguage(locale);
96
+ if (strings[language]) {
97
+ return strings[language];
98
+ }
99
+ for (let key in strings) {
100
+ if (key.startsWith(language + '-')) {
101
+ return strings[key];
102
+ }
103
+ }
104
+
105
+ // Nothing close, use english.
106
+ return strings[defaultLocale];
107
+ }
108
+ function getLanguage(locale) {
109
+ // @ts-ignore
110
+ if (Intl.Locale) {
111
+ // @ts-ignore
112
+ return new Intl.Locale(locale).language;
113
+ }
114
+ return locale.split('-')[0];
115
+ }
116
+
117
+ export { LocalizedStringDictionary };
118
+ //# sourceMappingURL=LocalizedStringDictionary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalizedStringDictionary.js","sources":["../../../../src/react-aria/internationalized/string/LocalizedStringDictionary.ts"],"sourcesContent":["/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2022 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 type { LocalizedString } from './LocalizedStringFormatter';\n\nexport type LocalizedStrings<K extends string, T extends LocalizedString> = {\n [lang: string]: Record<K, T>;\n};\n\nconst localeSymbol = Symbol.for('react-aria.i18n.locale');\nconst stringsSymbol = Symbol.for('react-aria.i18n.strings');\nlet cachedGlobalStrings: { [packageName: string]: LocalizedStringDictionary<any, any> } | null | undefined = undefined;\n\n/**\n * Stores a mapping of localized strings. Can be used to find the\n * closest available string for a given locale.\n */\nexport class LocalizedStringDictionary<K extends string = string, T extends LocalizedString = string> {\n private strings: LocalizedStrings<K, T>;\n private defaultLocale: string;\n\n constructor(messages: LocalizedStrings<K, T>, defaultLocale: string = 'en-US') {\n // Clone messages so we don't modify the original object.\n // Filter out entries with falsy values which may have been caused by applying optimize-locales-plugin.\n this.strings = Object.fromEntries(Object.entries(messages).filter(([, v]) => v));\n this.defaultLocale = defaultLocale;\n }\n\n /** Returns a localized string for the given key and locale. */\n getStringForLocale(key: K, locale: string): T {\n let strings = this.getStringsForLocale(locale);\n let string = strings[key];\n if (!string) {\n throw new Error(`Could not find intl message ${key} in ${locale} locale`);\n }\n\n return string;\n }\n\n /** Returns all localized strings for the given locale. */\n getStringsForLocale(locale: string): Record<K, T> {\n let strings = this.strings[locale];\n if (!strings) {\n strings = getStringsForLocale(locale, this.strings, this.defaultLocale);\n this.strings[locale] = strings;\n }\n\n return strings;\n }\n\n static getGlobalDictionaryForPackage<K extends string = string, T extends LocalizedString = string>(\n packageName: string\n ): LocalizedStringDictionary<K, T> | null {\n if (typeof window === 'undefined') {\n return null;\n }\n\n let locale = window[localeSymbol];\n if (cachedGlobalStrings === undefined) {\n let globalStrings = window[stringsSymbol];\n if (!globalStrings) {\n return null;\n }\n\n cachedGlobalStrings = {};\n for (let pkg in globalStrings) {\n cachedGlobalStrings[pkg] = new LocalizedStringDictionary({ [locale]: globalStrings[pkg] }, locale);\n }\n }\n\n let dictionary = cachedGlobalStrings?.[packageName];\n if (!dictionary) {\n throw new Error(\n `Strings for package \"${packageName}\" were not included by LocalizedStringProvider. Please add it to the list passed to createLocalizedStringDictionary.`\n );\n }\n\n return dictionary;\n }\n}\n\nfunction getStringsForLocale<K extends string, T extends LocalizedString>(\n locale: string,\n strings: LocalizedStrings<K, T>,\n defaultLocale = 'en-US'\n) {\n // If there is an exact match, use it.\n if (strings[locale]) {\n return strings[locale];\n }\n\n // Attempt to find the closest match by language.\n // For example, if the locale is fr-CA (French Canadian), but there is only\n // an fr-FR (France) set of strings, use that.\n // This could be replaced with Intl.LocaleMatcher once it is supported.\n // https://github.com/tc39/proposal-intl-localematcher\n let language = getLanguage(locale);\n if (strings[language]) {\n return strings[language];\n }\n\n for (let key in strings) {\n if (key.startsWith(language + '-')) {\n return strings[key];\n }\n }\n\n // Nothing close, use english.\n return strings[defaultLocale];\n}\n\nfunction getLanguage(locale: string) {\n // @ts-ignore\n if (Intl.Locale) {\n // @ts-ignore\n return new Intl.Locale(locale).language;\n }\n\n return locale.split('-')[0];\n}\n"],"names":["localeSymbol","Symbol","for","stringsSymbol","cachedGlobalStrings","undefined","LocalizedStringDictionary","constructor","messages","defaultLocale","arguments","length","_defineProperty","strings","Object","fromEntries","entries","filter","_ref","v","getStringForLocale","key","locale","getStringsForLocale","string","Error","getGlobalDictionaryForPackage","packageName","_cachedGlobalStrings","window","globalStrings","pkg","dictionary","language","getLanguage","startsWith","Intl","Locale","split"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { LocalizedStringDictionary } from './LocalizedStringDictionary.js';
2
+
3
+ type Variables = Record<string, string | number | boolean> | undefined;
4
+ type LocalizedString = string | ((args: Variables, formatter?: LocalizedStringFormatter<any, any>) => string);
5
+ type InternalString = string | (() => string);
6
+ /**
7
+ * Formats localized strings from a LocalizedStringDictionary. Supports interpolating variables,
8
+ * selecting the correct pluralization, and formatting numbers for the locale.
9
+ */
10
+ declare class LocalizedStringFormatter<K extends string = string, T extends LocalizedString = string> {
11
+ private locale;
12
+ private strings;
13
+ constructor(locale: string, strings: LocalizedStringDictionary<K, T>);
14
+ /** Formats a localized string for the given key with the provided variables. */
15
+ format(key: K, variables?: Variables): string;
16
+ protected plural(count: number, options: Record<string, InternalString>, type?: Intl.PluralRuleType): string;
17
+ protected number(value: number): string;
18
+ protected select(options: Record<string, InternalString>, value: string): string;
19
+ }
20
+
21
+ export { LocalizedString, LocalizedStringFormatter, Variables };
@@ -0,0 +1,70 @@
1
+ import { defineProperty as _defineProperty } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
+
3
+ /* eslint-disable prefer-const */
4
+ // @ts-nocheck
5
+ /*
6
+ * Copyright 2022 Adobe. All rights reserved.
7
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License. You may obtain a copy
9
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software distributed under
12
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
13
+ * OF ANY KIND, either express or implied. See the License for the specific language
14
+ * governing permissions and limitations under the License.
15
+ */
16
+
17
+ const pluralRulesCache = new Map();
18
+ const numberFormatCache = new Map();
19
+
20
+ /**
21
+ * Formats localized strings from a LocalizedStringDictionary. Supports interpolating variables,
22
+ * selecting the correct pluralization, and formatting numbers for the locale.
23
+ */
24
+ class LocalizedStringFormatter {
25
+ constructor(locale, strings) {
26
+ _defineProperty(this, "locale", void 0);
27
+ _defineProperty(this, "strings", void 0);
28
+ this.locale = locale;
29
+ this.strings = strings;
30
+ }
31
+
32
+ /** Formats a localized string for the given key with the provided variables. */
33
+ format(key, variables) {
34
+ let message = this.strings.getStringForLocale(key, this.locale);
35
+ return typeof message === 'function' ? message(variables, this) : message;
36
+ }
37
+ plural(count, options) {
38
+ let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'cardinal';
39
+ let opt = options['=' + count];
40
+ if (opt) {
41
+ return typeof opt === 'function' ? opt() : opt;
42
+ }
43
+ let key = this.locale + ':' + type;
44
+ let pluralRules = pluralRulesCache.get(key);
45
+ if (!pluralRules) {
46
+ pluralRules = new Intl.PluralRules(this.locale, {
47
+ type
48
+ });
49
+ pluralRulesCache.set(key, pluralRules);
50
+ }
51
+ let selected = pluralRules.select(count);
52
+ opt = options[selected] || options.other;
53
+ return typeof opt === 'function' ? opt() : opt;
54
+ }
55
+ number(value) {
56
+ let numberFormat = numberFormatCache.get(this.locale);
57
+ if (!numberFormat) {
58
+ numberFormat = new Intl.NumberFormat(this.locale);
59
+ numberFormatCache.set(this.locale, numberFormat);
60
+ }
61
+ return numberFormat.format(value);
62
+ }
63
+ select(options, value) {
64
+ let opt = options[value] || options.other;
65
+ return typeof opt === 'function' ? opt() : opt;
66
+ }
67
+ }
68
+
69
+ export { LocalizedStringFormatter };
70
+ //# sourceMappingURL=LocalizedStringFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalizedStringFormatter.js","sources":["../../../../src/react-aria/internationalized/string/LocalizedStringFormatter.ts"],"sourcesContent":["/* eslint-disable prefer-const */\n// @ts-nocheck\n/*\n * Copyright 2022 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 type { LocalizedStringDictionary } from './LocalizedStringDictionary';\n\nexport type Variables = Record<string, string | number | boolean> | undefined;\nexport type LocalizedString = string | ((args: Variables, formatter?: LocalizedStringFormatter<any, any>) => string);\ntype InternalString = string | (() => string);\n\nconst pluralRulesCache = new Map<string, Intl.PluralRules>();\nconst numberFormatCache = new Map<string, Intl.NumberFormat>();\n\n/**\n * Formats localized strings from a LocalizedStringDictionary. Supports interpolating variables,\n * selecting the correct pluralization, and formatting numbers for the locale.\n */\nexport class LocalizedStringFormatter<K extends string = string, T extends LocalizedString = string> {\n private locale: string;\n private strings: LocalizedStringDictionary<K, T>;\n\n constructor(locale: string, strings: LocalizedStringDictionary<K, T>) {\n this.locale = locale;\n this.strings = strings;\n }\n\n /** Formats a localized string for the given key with the provided variables. */\n format(key: K, variables?: Variables): string {\n let message = this.strings.getStringForLocale(key, this.locale);\n\n return typeof message === 'function' ? message(variables, this) : message;\n }\n\n protected plural(count: number, options: Record<string, InternalString>, type: Intl.PluralRuleType = 'cardinal') {\n let opt = options['=' + count];\n if (opt) {\n return typeof opt === 'function' ? opt() : opt;\n }\n\n let key = this.locale + ':' + type;\n let pluralRules = pluralRulesCache.get(key);\n if (!pluralRules) {\n pluralRules = new Intl.PluralRules(this.locale, { type });\n pluralRulesCache.set(key, pluralRules);\n }\n\n let selected = pluralRules.select(count);\n opt = options[selected] || options.other;\n return typeof opt === 'function' ? opt() : opt;\n }\n\n protected number(value: number) {\n let numberFormat = numberFormatCache.get(this.locale);\n if (!numberFormat) {\n numberFormat = new Intl.NumberFormat(this.locale);\n numberFormatCache.set(this.locale, numberFormat);\n }\n return numberFormat.format(value);\n }\n\n protected select(options: Record<string, InternalString>, value: string) {\n let opt = options[value] || options.other;\n return typeof opt === 'function' ? opt() : opt;\n }\n}\n"],"names":["pluralRulesCache","Map","numberFormatCache","LocalizedStringFormatter","constructor","locale","strings","_defineProperty","format","key","variables","message","getStringForLocale","plural","count","options","type","arguments","length","undefined","opt","pluralRules","get","Intl","PluralRules","set","selected","select","other","number","value","numberFormat","NumberFormat"],"mappings":"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"}