@rpcbase/ui 0.218.0 → 0.220.0

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 (230) hide show
  1. package/dist/components/AddressAutocompleteInput/index.d.ts.map +1 -1
  2. package/dist/index100.js +4 -5
  3. package/dist/index100.js.map +1 -1
  4. package/dist/index101.js +8 -4
  5. package/dist/index101.js.map +1 -1
  6. package/dist/index102.js +5 -8
  7. package/dist/index102.js.map +1 -1
  8. package/dist/index103.js +4 -5
  9. package/dist/index103.js.map +1 -1
  10. package/dist/index104.js +3 -3
  11. package/dist/index104.js.map +1 -1
  12. package/dist/index105.js +6 -4
  13. package/dist/index105.js.map +1 -1
  14. package/dist/index106.js +145 -6
  15. package/dist/index106.js.map +1 -1
  16. package/dist/index107.js +38 -144
  17. package/dist/index107.js.map +1 -1
  18. package/dist/index108.js +4 -39
  19. package/dist/index108.js.map +1 -1
  20. package/dist/index109.js +7 -4
  21. package/dist/index109.js.map +1 -1
  22. package/dist/index110.js +12 -6
  23. package/dist/index110.js.map +1 -1
  24. package/dist/index111.js +13 -13
  25. package/dist/index111.js.map +1 -1
  26. package/dist/index112.js +7 -13
  27. package/dist/index112.js.map +1 -1
  28. package/dist/index113.js +30 -6
  29. package/dist/index113.js.map +1 -1
  30. package/dist/index114.js +10 -31
  31. package/dist/index114.js.map +1 -1
  32. package/dist/index115.js +10 -10
  33. package/dist/index115.js.map +1 -1
  34. package/dist/index116.js +8 -10
  35. package/dist/index116.js.map +1 -1
  36. package/dist/index117.js +13 -8
  37. package/dist/index117.js.map +1 -1
  38. package/dist/index118.js +101 -13
  39. package/dist/index118.js.map +1 -1
  40. package/dist/index119.js +20 -102
  41. package/dist/index119.js.map +1 -1
  42. package/dist/index120.js +54 -20
  43. package/dist/index120.js.map +1 -1
  44. package/dist/index121.js +70 -51
  45. package/dist/index121.js.map +1 -1
  46. package/dist/index122.js +9 -72
  47. package/dist/index122.js.map +1 -1
  48. package/dist/index123.js +20 -9
  49. package/dist/index123.js.map +1 -1
  50. package/dist/index124.js +16 -20
  51. package/dist/index124.js.map +1 -1
  52. package/dist/index125.js +23 -16
  53. package/dist/index125.js.map +1 -1
  54. package/dist/index126.js +6 -23
  55. package/dist/index126.js.map +1 -1
  56. package/dist/index127.js +5 -6
  57. package/dist/index127.js.map +1 -1
  58. package/dist/index128.js +23 -5
  59. package/dist/index128.js.map +1 -1
  60. package/dist/index129.js +35 -24
  61. package/dist/index129.js.map +1 -1
  62. package/dist/index130.js +16 -35
  63. package/dist/index130.js.map +1 -1
  64. package/dist/index131.js +7 -16
  65. package/dist/index131.js.map +1 -1
  66. package/dist/index132.js +4 -6
  67. package/dist/index132.js.map +1 -1
  68. package/dist/index133.js +4 -4
  69. package/dist/index133.js.map +1 -1
  70. package/dist/index134.js +4 -4
  71. package/dist/index134.js.map +1 -1
  72. package/dist/index135.js +4 -4
  73. package/dist/index135.js.map +1 -1
  74. package/dist/index136.js +3 -4
  75. package/dist/index136.js.map +1 -1
  76. package/dist/index137.js +6 -3
  77. package/dist/index137.js.map +1 -1
  78. package/dist/index138.js +24 -7
  79. package/dist/index138.js.map +1 -1
  80. package/dist/index139.js +8 -24
  81. package/dist/index139.js.map +1 -1
  82. package/dist/index140.js +6 -7
  83. package/dist/index140.js.map +1 -1
  84. package/dist/index141.js +5 -6
  85. package/dist/index141.js.map +1 -1
  86. package/dist/index142.js +3 -5
  87. package/dist/index142.js.map +1 -1
  88. package/dist/index143.js +3 -3
  89. package/dist/index143.js.map +1 -1
  90. package/dist/index144.js +4 -3
  91. package/dist/index144.js.map +1 -1
  92. package/dist/index145.js +3 -4
  93. package/dist/index145.js.map +1 -1
  94. package/dist/index146.js +4 -3
  95. package/dist/index146.js.map +1 -1
  96. package/dist/index147.js +3 -4
  97. package/dist/index147.js.map +1 -1
  98. package/dist/index148.js +3 -3
  99. package/dist/index148.js.map +1 -1
  100. package/dist/index149.js +3 -3
  101. package/dist/index149.js.map +1 -1
  102. package/dist/index150.js +46 -3
  103. package/dist/index150.js.map +1 -1
  104. package/dist/index151.js +1 -1
  105. package/dist/index153.js +1 -1
  106. package/dist/index154.js +1 -1
  107. package/dist/index181.js +1 -1
  108. package/dist/index228.js +1 -1
  109. package/dist/index231.js +1 -1
  110. package/dist/index233.js +1 -1
  111. package/dist/index234.js +1 -1
  112. package/dist/index235.js +3 -3
  113. package/dist/index236.js +2 -2
  114. package/dist/index269.js +1 -1
  115. package/dist/index271.js +4 -4
  116. package/dist/index294.js +69 -65
  117. package/dist/index294.js.map +1 -1
  118. package/dist/index295.js +8 -68
  119. package/dist/index295.js.map +1 -1
  120. package/dist/index296.js +14 -9
  121. package/dist/index296.js.map +1 -1
  122. package/dist/index297.js +66 -14
  123. package/dist/index297.js.map +1 -1
  124. package/dist/index298.js +64 -65
  125. package/dist/index298.js.map +1 -1
  126. package/dist/index3.js +99 -87
  127. package/dist/index3.js.map +1 -1
  128. package/dist/index31.js +5 -5
  129. package/dist/index32.js +24 -24
  130. package/dist/index33.js +3 -3
  131. package/dist/index36.js +1 -1
  132. package/dist/index37.js +2 -2
  133. package/dist/index41.js +20 -20
  134. package/dist/index49.js +1 -1
  135. package/dist/index50.js +1 -1
  136. package/dist/index53.js +7 -2
  137. package/dist/index53.js.map +1 -1
  138. package/dist/index54.js +34 -2
  139. package/dist/index54.js.map +1 -1
  140. package/dist/index55.js +47 -5
  141. package/dist/index55.js.map +1 -1
  142. package/dist/index56.js +7 -33
  143. package/dist/index56.js.map +1 -1
  144. package/dist/index57.js +11 -48
  145. package/dist/index57.js.map +1 -1
  146. package/dist/index58.js +3 -7
  147. package/dist/index58.js.map +1 -1
  148. package/dist/index59.js +47 -11
  149. package/dist/index59.js.map +1 -1
  150. package/dist/index60.js +50 -3
  151. package/dist/index60.js.map +1 -1
  152. package/dist/index61.js +7 -47
  153. package/dist/index61.js.map +1 -1
  154. package/dist/index62.js +12 -48
  155. package/dist/index62.js.map +1 -1
  156. package/dist/index63.js +133 -7
  157. package/dist/index63.js.map +1 -1
  158. package/dist/index64.js +10 -14
  159. package/dist/index64.js.map +1 -1
  160. package/dist/index65.js +210 -127
  161. package/dist/index65.js.map +1 -1
  162. package/dist/index66.js +12 -10
  163. package/dist/index66.js.map +1 -1
  164. package/dist/index67.js +44 -214
  165. package/dist/index67.js.map +1 -1
  166. package/dist/index68.js +49 -12
  167. package/dist/index68.js.map +1 -1
  168. package/dist/index69.js +4 -47
  169. package/dist/index69.js.map +1 -1
  170. package/dist/index70.js +5 -49
  171. package/dist/index70.js.map +1 -1
  172. package/dist/index71.js +28 -4
  173. package/dist/index71.js.map +1 -1
  174. package/dist/index72.js +50 -6
  175. package/dist/index72.js.map +1 -1
  176. package/dist/index73.js +9 -28
  177. package/dist/index73.js.map +1 -1
  178. package/dist/index74.js +6 -50
  179. package/dist/index74.js.map +1 -1
  180. package/dist/index75.js +8 -9
  181. package/dist/index75.js.map +1 -1
  182. package/dist/index76.js +5 -5
  183. package/dist/index76.js.map +1 -1
  184. package/dist/index77.js +2 -8
  185. package/dist/index77.js.map +1 -1
  186. package/dist/index78.js +2 -6
  187. package/dist/index78.js.map +1 -1
  188. package/dist/index79.js +52 -47
  189. package/dist/index79.js.map +1 -1
  190. package/dist/index80.js +5 -52
  191. package/dist/index80.js.map +1 -1
  192. package/dist/index81.js +4 -4
  193. package/dist/index81.js.map +1 -1
  194. package/dist/index82.js +15 -4
  195. package/dist/index82.js.map +1 -1
  196. package/dist/index83.js +5 -15
  197. package/dist/index83.js.map +1 -1
  198. package/dist/index84.js +7 -5
  199. package/dist/index84.js.map +1 -1
  200. package/dist/index85.js +15 -6
  201. package/dist/index85.js.map +1 -1
  202. package/dist/index86.js +4 -16
  203. package/dist/index86.js.map +1 -1
  204. package/dist/index87.js +1 -1
  205. package/dist/index87.js.map +1 -1
  206. package/dist/index88.js +5 -4
  207. package/dist/index88.js.map +1 -1
  208. package/dist/index89.js +4 -4
  209. package/dist/index89.js.map +1 -1
  210. package/dist/index90.js +4 -5
  211. package/dist/index90.js.map +1 -1
  212. package/dist/index91.js +2 -2
  213. package/dist/index91.js.map +1 -1
  214. package/dist/index92.js +5 -3
  215. package/dist/index92.js.map +1 -1
  216. package/dist/index93.js +24 -6
  217. package/dist/index93.js.map +1 -1
  218. package/dist/index94.js +6 -24
  219. package/dist/index94.js.map +1 -1
  220. package/dist/index95.js +4 -6
  221. package/dist/index95.js.map +1 -1
  222. package/dist/index96.js +5 -3
  223. package/dist/index96.js.map +1 -1
  224. package/dist/index97.js +5 -6
  225. package/dist/index97.js.map +1 -1
  226. package/dist/index98.js +4 -5
  227. package/dist/index98.js.map +1 -1
  228. package/dist/index99.js +4 -3
  229. package/dist/index99.js.map +1 -1
  230. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index3.js","sources":["../src/components/AddressAutocompleteInput/index.tsx"],"sourcesContent":["import { ReactNode, ChangeEvent, KeyboardEvent, useState, useEffect, useRef, useMemo } from \"react\"\nimport clsx from \"clsx\"\n\nimport { useMapsLibrary } from \"@/helpers/useMapsLibrary\"\nimport { Input } from \"@/components/Input\"\nimport { cn } from \"@/lib/utils\"\n\n\nconst DEFAULT_ALLOWED_TYPES = new Set([\n \"street_address\",\n \"route\",\n \"premise\",\n \"subpremise\",\n \"intersection\",\n \"sublocality\",\n \"sublocality_level_1\",\n \"sublocality_level_2\",\n \"sublocality_level_3\",\n \"sublocality_level_4\",\n \"sublocality_level_5\",\n \"administrative_area_level_1\",\n \"administrative_area_level_2\",\n \"administrative_area_level_3\",\n \"administrative_area_level_4\",\n \"administrative_area_level_5\",\n \"administrative_area_level_6\",\n \"administrative_area_level_7\",\n \"postal_code\",\n \"locality\",\n \"country\",\n \"geocode\",\n \"plus_code\",\n \"political\",\n \"neighborhood\",\n \"colloquial_area\",\n \"lodging\",\n \"train_station\",\n \"transit_station\",\n])\n\nconst getDisplayText = (prediction: google.maps.places.PlacePrediction) => {\n const fullText = prediction.text?.text ?? \"\"\n return fullText.replace(/, France$/, \"\").trim()\n}\n\nconst PredictionItem = ({ prediction }: { prediction: google.maps.places.PlacePrediction }) => {\n const displayText = getDisplayText(prediction)\n const fullText = prediction.text?.text ?? \"\"\n const matches = prediction.text?.matches ?? []\n const wasCountryRemoved = displayText.length < fullText.length\n\n if (matches.length === 0) {\n return <>{displayText}</>\n }\n\n const parts: ReactNode[] = []\n let lastIndex = 0\n\n matches.forEach((substring, index) => {\n if (wasCountryRemoved && substring.startOffset >= displayText.length) {\n return\n }\n\n const startOffset = substring.startOffset\n const endOffset = Math.min(substring.endOffset, displayText.length)\n\n if (startOffset > lastIndex) {\n parts.push(displayText.substring(lastIndex, startOffset))\n }\n\n if (endOffset > startOffset) {\n const matched = displayText.substring(startOffset, endOffset)\n parts.push(<strong key={index}>{matched}</strong>)\n }\n\n lastIndex = Math.max(lastIndex, endOffset)\n })\n\n if (lastIndex < displayText.length) {\n parts.push(displayText.substring(lastIndex))\n }\n\n if (parts.length === 0) {\n return <>{displayText}</>\n }\n\n return <>{parts}</>\n}\n\nconst isAllowedPrediction = (\n prediction: google.maps.places.PlacePrediction,\n allowedTypes: ReadonlySet<string> | null,\n) => {\n if (!prediction.types || prediction.types.length === 0) {\n return true\n }\n\n if (!allowedTypes || allowedTypes.size === 0) {\n return true\n }\n\n return prediction.types.some(type => allowedTypes.has(type))\n}\n\nconst getPredictionId = (prediction: google.maps.places.PlacePrediction, index: number) =>\n prediction.placeId || `${prediction.text?.text ?? \"prediction\"}-${index}`\n\nconst getUniquePredictions = (predictions: google.maps.places.PlacePrediction[]) => {\n const map = new Map<string, google.maps.places.PlacePrediction>()\n\n predictions.forEach(prediction => {\n const key = prediction.placeId\n\n if (!key) {\n return\n }\n\n if (!map.has(key)) {\n map.set(key, prediction)\n }\n })\n\n return Array.from(map.values())\n}\n\nconst getFilteredPredictions = (\n predictions: google.maps.places.PlacePrediction[],\n allowedTypes: ReadonlySet<string> | null,\n) => predictions.filter(prediction => isAllowedPrediction(prediction, allowedTypes))\n\nconst sortPredictions = (predictions: google.maps.places.PlacePrediction[]) =>\n predictions.sort((a, b) => {\n const aDistance = a.distanceMeters ?? Number.POSITIVE_INFINITY\n const bDistance = b.distanceMeters ?? Number.POSITIVE_INFINITY\n\n return aDistance - bDistance\n })\n\nconst buildDisplayPredictions = (\n predictions: google.maps.places.PlacePrediction[],\n allowedTypes: ReadonlySet<string> | null,\n) => sortPredictions(getFilteredPredictions(getUniquePredictions(predictions), allowedTypes))\n\nconst isExactMatch = (prediction: google.maps.places.PlacePrediction, value: string) => {\n const display = getDisplayText(prediction)\n return display.toLowerCase() === value.trim().toLowerCase()\n}\n\nexport const AddressAutocompleteInput = ({\n id,\n label,\n placeholder,\n value,\n onValueChange,\n disabled,\n name,\n className,\n autofillShimName,\n googleMapsApiKey,\n locationRestriction,\n allowedTypes,\n}: {\n id: string\n label: string\n placeholder: string\n value: string | undefined\n onValueChange: (value: string) => void\n disabled?: boolean\n name?: string\n className?: string\n autofillShimName?: string\n googleMapsApiKey?: string\n locationRestriction?: google.maps.LatLngBoundsLiteral | google.maps.LatLngBounds\n allowedTypes?: Iterable<string>\n}) => {\n const [inputValue, setInputValue] = useState(value ?? \"\")\n const [predictions, setPredictions] = useState<google.maps.places.PlacePrediction[]>([])\n const [isDropdownOpen, setIsDropdownOpen] = useState(false)\n const [highlightedIndex, setHighlightedIndex] = useState(-1)\n\n const inputRef = useRef<HTMLInputElement>(null)\n const dropdownRef = useRef<HTMLUListElement>(null)\n const isSelecting = useRef(false)\n const hasUserTyped = useRef(false)\n const sessionTokenRef = useRef<google.maps.places.AutocompleteSessionToken | null>(null)\n const optionRefs = useRef<(HTMLLIElement | null)[]>([])\n const scrollBehaviorRef = useRef<ScrollBehavior>(\"smooth\")\n const placesLibrary = useMapsLibrary(\"places\", googleMapsApiKey)\n const allowedTypesSet = useMemo(() => {\n if (!allowedTypes) {\n return DEFAULT_ALLOWED_TYPES\n }\n\n const newSet = new Set<string>()\n for (const type of allowedTypes) {\n newSet.add(type)\n }\n return newSet\n }, [allowedTypes])\n\n useEffect(() => {\n setInputValue(value ?? \"\")\n hasUserTyped.current = false\n }, [value])\n\n useEffect(() => {\n if (isSelecting.current) {\n isSelecting.current = false\n return\n }\n\n let isActive = true\n\n const handler = setTimeout(() => {\n if (!isActive) {\n return\n }\n\n const trimmed = inputValue.trim()\n\n if (trimmed === \"\") {\n setPredictions([])\n setIsDropdownOpen(false)\n sessionTokenRef.current = null\n if (value !== \"\") {\n onValueChange(\"\")\n }\n return\n }\n\n if (!placesLibrary) return\n\n const { AutocompleteSuggestion, AutocompleteSessionToken } = placesLibrary\n\n if (!AutocompleteSuggestion || !AutocompleteSessionToken) {\n console.error(\"AddressAutocompleteInput: missing AutocompleteSuggestion or AutocompleteSessionToken exports\")\n setPredictions([])\n setIsDropdownOpen(false)\n return\n }\n\n if (!sessionTokenRef.current) {\n sessionTokenRef.current = new AutocompleteSessionToken()\n }\n\n const request: google.maps.places.AutocompleteRequest = {\n input: inputValue,\n sessionToken: sessionTokenRef.current ?? undefined,\n includedRegionCodes: [\"fr\"],\n }\n if (locationRestriction) {\n request.locationRestriction = locationRestriction\n }\n\n AutocompleteSuggestion.fetchAutocompleteSuggestions(request)\n .then((response: { suggestions: google.maps.places.AutocompleteSuggestion[] }) => {\n if (!isActive) {\n return\n }\n\n const placePredictions = response.suggestions\n .map((suggestion: google.maps.places.AutocompleteSuggestion) => suggestion.placePrediction)\n .filter((prediction): prediction is google.maps.places.PlacePrediction => Boolean(prediction))\n\n const combinedPredictions = buildDisplayPredictions(placePredictions, allowedTypesSet)\n\n const singlePrediction = combinedPredictions[0]\n const hasExactMatch =\n singlePrediction && combinedPredictions.length === 1 && isExactMatch(singlePrediction, inputValue)\n\n if (!hasUserTyped.current && hasExactMatch) {\n setPredictions(combinedPredictions)\n setIsDropdownOpen(false)\n return\n }\n\n if (combinedPredictions.length > 0) {\n setPredictions(combinedPredictions)\n if (hasUserTyped.current) {\n setIsDropdownOpen(true)\n }\n setHighlightedIndex(-1)\n } else {\n setPredictions([])\n setIsDropdownOpen(false)\n }\n })\n .catch((error: unknown) => {\n if (!isActive) {\n return\n }\n console.error(\"AddressAutocompleteInput: suggestion fetch failed\", error)\n setPredictions([])\n setIsDropdownOpen(false)\n })\n }, 300)\n\n return () => {\n isActive = false\n clearTimeout(handler)\n }\n }, [inputValue, placesLibrary, onValueChange, value, locationRestriction, allowedTypesSet])\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n inputRef.current &&\n !inputRef.current.contains(event.target as Node) &&\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setIsDropdownOpen(false)\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside)\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside)\n }\n }, [])\n\n const handleSelectPrediction = (prediction: google.maps.places.PlacePrediction) => {\n isSelecting.current = true\n const newAddress = getDisplayText(prediction)\n setInputValue(newAddress)\n onValueChange(newAddress)\n setPredictions([])\n setIsDropdownOpen(false)\n sessionTokenRef.current = null\n }\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n hasUserTyped.current = true\n setInputValue(e.target.value)\n }\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (!isDropdownOpen || predictions.length === 0) {\n if (e.key === \"Enter\") {\n e.preventDefault()\n onValueChange(inputValue)\n setIsDropdownOpen(false)\n sessionTokenRef.current = null\n }\n return\n }\n\n if (e.key === \"ArrowDown\") {\n scrollBehaviorRef.current = e.repeat ? \"auto\" : \"smooth\"\n e.preventDefault()\n setHighlightedIndex(prev => {\n if (predictions.length === 0) {\n return -1\n }\n return prev < 0 ? 0 : (prev + 1) % predictions.length\n })\n } else if (e.key === \"ArrowUp\") {\n scrollBehaviorRef.current = e.repeat ? \"auto\" : \"smooth\"\n e.preventDefault()\n setHighlightedIndex(prev => {\n if (predictions.length === 0) {\n return -1\n }\n if (prev <= 0) {\n return predictions.length - 1\n }\n return (prev - 1) % predictions.length\n })\n } else if (e.key === \"Enter\") {\n e.preventDefault()\n if (highlightedIndex > -1 && predictions[highlightedIndex]) {\n handleSelectPrediction(predictions[highlightedIndex])\n } else {\n onValueChange(inputValue)\n setIsDropdownOpen(false)\n sessionTokenRef.current = null\n }\n } else if (e.key === \"Escape\") {\n setIsDropdownOpen(false)\n }\n }\n\n const handleBlur = () => {\n setIsDropdownOpen(false)\n if (value !== inputValue) {\n onValueChange(inputValue)\n }\n sessionTokenRef.current = null\n }\n\n const shimName = autofillShimName ?? (name ? `${name}_shim` : undefined)\n\n useEffect(() => {\n if (!isDropdownOpen || highlightedIndex < 0) {\n scrollBehaviorRef.current = \"smooth\"\n return\n }\n\n const item = optionRefs.current[highlightedIndex]\n const list = dropdownRef.current\n\n if (!item || !list) {\n scrollBehaviorRef.current = \"smooth\"\n return\n }\n\n const behavior = scrollBehaviorRef.current\n scrollBehaviorRef.current = \"smooth\"\n\n const top = item.offsetTop\n const bottom = top + item.offsetHeight\n const viewTop = list.scrollTop\n const viewBottom = viewTop + list.clientHeight\n\n if (top >= viewTop && bottom <= viewBottom) {\n return\n }\n\n item.scrollIntoView({\n block: \"nearest\",\n behavior,\n })\n }, [highlightedIndex, isDropdownOpen])\n\n optionRefs.current.length = predictions.length\n\n return (\n <div className=\"relative\">\n {shimName && (\n <input\n tabIndex={-1}\n autoComplete=\"street-address\"\n name={shimName}\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute left-0 top-0 h-0 w-0 opacity-0\"\n />\n )}\n <label htmlFor={id} className=\"text-left block text-sm font-medium text-gray-700 mb-1 cursor-pointer\">\n {label}\n </label>\n <Input\n ref={inputRef}\n id={id}\n type=\"text\"\n placeholder={placeholder}\n name={name ?? `${id}_input`}\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={() => {\n if (predictions.length > 0 && inputValue) {\n setIsDropdownOpen(true)\n }\n }}\n onBlur={handleBlur}\n disabled={disabled}\n autoComplete=\"off\"\n className={cn(\"w-full\", className)}\n />\n {isDropdownOpen && predictions.length > 0 && (\n <ul\n ref={dropdownRef}\n className=\"absolute z-10 mt-1 w-full max-h-60 overflow-y-auto rounded-md border border-gray-200 bg-white text-left shadow-lg\"\n role=\"listbox\"\n >\n {predictions.map((prediction, index) => (\n <li\n key={getPredictionId(prediction, index)}\n ref={node => {\n optionRefs.current[index] = node\n }}\n className={clsx(\n \"cursor-pointer px-3 py-2 text-sm text-gray-700 hover:bg-gray-100\",\n { \"bg-gray-100\": highlightedIndex === index },\n )}\n role=\"option\"\n onMouseDown={e => {\n e.preventDefault()\n handleSelectPrediction(prediction)\n }}\n >\n <PredictionItem prediction={prediction} />\n </li>\n ))}\n </ul>\n )}\n </div>\n )\n}\n"],"names":["DEFAULT_ALLOWED_TYPES","Set","getDisplayText","prediction","text","replace","trim","PredictionItem","t0","$","_c","displayText","parts","t1","Symbol","for","bb0","fullText","matches","wasCountryRemoved","length","lastIndex","forEach","substring","index","startOffset","endOffset","Math","min","push","matched","jsx","max","t2","isAllowedPrediction","allowedTypes","types","size","some","type","has","getPredictionId","placeId","getUniquePredictions","predictions","map","Map","key","set","Array","from","values","getFilteredPredictions","filter","sortPredictions","sort","a","b","aDistance","distanceMeters","Number","POSITIVE_INFINITY","bDistance","buildDisplayPredictions","isExactMatch","value","toLowerCase","AddressAutocompleteInput","id","label","placeholder","onValueChange","disabled","name","className","autofillShimName","googleMapsApiKey","locationRestriction","inputValue","setInputValue","useState","setPredictions","isDropdownOpen","setIsDropdownOpen","highlightedIndex","setHighlightedIndex","inputRef","useRef","dropdownRef","isSelecting","hasUserTyped","sessionTokenRef","optionRefs","scrollBehaviorRef","placesLibrary","useMapsLibrary","allowedTypesSet","useMemo","newSet","add","useEffect","current","isActive","handler","setTimeout","AutocompleteSuggestion","AutocompleteSessionToken","console","error","request","input","sessionToken","undefined","includedRegionCodes","fetchAutocompleteSuggestions","then","response","placePredictions","suggestions","suggestion","placePrediction","Boolean","combinedPredictions","singlePrediction","hasExactMatch","catch","clearTimeout","handleClickOutside","event","contains","target","document","addEventListener","removeEventListener","handleSelectPrediction","newAddress","handleInputChange","e","handleKeyDown","preventDefault","repeat","prev","handleBlur","shimName","item","list","behavior","top","offsetTop","bottom","offsetHeight","viewTop","scrollTop","viewBottom","clientHeight","scrollIntoView","block","jsxs","Input","cn","node","clsx"],"mappings":"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"}
1
+ {"version":3,"file":"index3.js","sources":["../src/components/AddressAutocompleteInput/index.tsx"],"sourcesContent":["import { ReactNode, ChangeEvent, KeyboardEvent, useState, useEffect, useRef, useMemo } from \"react\"\nimport clsx from \"clsx\"\nimport { Loader2 } from \"lucide-react\"\n\nimport { useMapsLibrary } from \"@/helpers/useMapsLibrary\"\nimport { Input } from \"@/components/Input\"\nimport { cn } from \"@/lib/utils\"\n\n\nconst DEFAULT_ALLOWED_TYPES = new Set([\n \"street_address\",\n \"route\",\n \"premise\",\n \"subpremise\",\n \"intersection\",\n \"sublocality\",\n \"sublocality_level_1\",\n \"sublocality_level_2\",\n \"sublocality_level_3\",\n \"sublocality_level_4\",\n \"sublocality_level_5\",\n \"administrative_area_level_1\",\n \"administrative_area_level_2\",\n \"administrative_area_level_3\",\n \"administrative_area_level_4\",\n \"administrative_area_level_5\",\n \"administrative_area_level_6\",\n \"administrative_area_level_7\",\n \"postal_code\",\n \"locality\",\n \"country\",\n \"geocode\",\n \"plus_code\",\n \"political\",\n \"neighborhood\",\n \"colloquial_area\",\n \"lodging\",\n \"train_station\",\n \"transit_station\",\n])\n\nconst getDisplayText = (prediction: google.maps.places.PlacePrediction) => {\n const fullText = prediction.text?.text ?? \"\"\n return fullText.replace(/, France$/, \"\").trim()\n}\n\nconst PredictionItem = ({ prediction }: { prediction: google.maps.places.PlacePrediction }) => {\n const displayText = getDisplayText(prediction)\n const fullText = prediction.text?.text ?? \"\"\n const matches = prediction.text?.matches ?? []\n const wasCountryRemoved = displayText.length < fullText.length\n\n if (matches.length === 0) {\n return <>{displayText}</>\n }\n\n const parts: ReactNode[] = []\n let lastIndex = 0\n\n matches.forEach((substring, index) => {\n if (wasCountryRemoved && substring.startOffset >= displayText.length) {\n return\n }\n\n const startOffset = substring.startOffset\n const endOffset = Math.min(substring.endOffset, displayText.length)\n\n if (startOffset > lastIndex) {\n parts.push(displayText.substring(lastIndex, startOffset))\n }\n\n if (endOffset > startOffset) {\n const matched = displayText.substring(startOffset, endOffset)\n parts.push(<strong key={index}>{matched}</strong>)\n }\n\n lastIndex = Math.max(lastIndex, endOffset)\n })\n\n if (lastIndex < displayText.length) {\n parts.push(displayText.substring(lastIndex))\n }\n\n if (parts.length === 0) {\n return <>{displayText}</>\n }\n\n return <>{parts}</>\n}\n\nconst isAllowedPrediction = (\n prediction: google.maps.places.PlacePrediction,\n allowedTypes: ReadonlySet<string> | null,\n) => {\n if (!prediction.types || prediction.types.length === 0) {\n return true\n }\n\n if (!allowedTypes || allowedTypes.size === 0) {\n return true\n }\n\n return prediction.types.some(type => allowedTypes.has(type))\n}\n\nconst getPredictionId = (prediction: google.maps.places.PlacePrediction, index: number) =>\n prediction.placeId || `${prediction.text?.text ?? \"prediction\"}-${index}`\n\nconst getUniquePredictions = (predictions: google.maps.places.PlacePrediction[]) => {\n const map = new Map<string, google.maps.places.PlacePrediction>()\n\n predictions.forEach(prediction => {\n const key = prediction.placeId\n\n if (!key) {\n return\n }\n\n if (!map.has(key)) {\n map.set(key, prediction)\n }\n })\n\n return Array.from(map.values())\n}\n\nconst getFilteredPredictions = (\n predictions: google.maps.places.PlacePrediction[],\n allowedTypes: ReadonlySet<string> | null,\n) => predictions.filter(prediction => isAllowedPrediction(prediction, allowedTypes))\n\nconst sortPredictions = (predictions: google.maps.places.PlacePrediction[]) =>\n predictions.sort((a, b) => {\n const aDistance = a.distanceMeters ?? Number.POSITIVE_INFINITY\n const bDistance = b.distanceMeters ?? Number.POSITIVE_INFINITY\n\n return aDistance - bDistance\n })\n\nconst buildDisplayPredictions = (\n predictions: google.maps.places.PlacePrediction[],\n allowedTypes: ReadonlySet<string> | null,\n) => sortPredictions(getFilteredPredictions(getUniquePredictions(predictions), allowedTypes))\n\nconst isExactMatch = (prediction: google.maps.places.PlacePrediction, value: string) => {\n const display = getDisplayText(prediction)\n return display.toLowerCase() === value.trim().toLowerCase()\n}\n\nexport const AddressAutocompleteInput = ({\n id,\n label,\n placeholder,\n value,\n onValueChange,\n disabled,\n name,\n className,\n autofillShimName,\n googleMapsApiKey,\n locationRestriction,\n allowedTypes,\n}: {\n id: string\n label: string\n placeholder: string\n value: string | undefined\n onValueChange: (value: string) => void\n disabled?: boolean\n name?: string\n className?: string\n autofillShimName?: string\n googleMapsApiKey?: string\n locationRestriction?: google.maps.LatLngBoundsLiteral | google.maps.LatLngBounds\n allowedTypes?: Iterable<string>\n}) => {\n const [inputValue, setInputValue] = useState(value ?? \"\")\n const [predictions, setPredictions] = useState<google.maps.places.PlacePrediction[]>([])\n const [isDropdownOpen, setIsDropdownOpen] = useState(false)\n const [highlightedIndex, setHighlightedIndex] = useState(-1)\n const [isLoading, setIsLoading] = useState(false)\n\n const inputRef = useRef<HTMLInputElement>(null)\n const dropdownRef = useRef<HTMLUListElement>(null)\n const isSelecting = useRef(false)\n const hasUserTyped = useRef(false)\n const sessionTokenRef = useRef<google.maps.places.AutocompleteSessionToken | null>(null)\n const optionRefs = useRef<(HTMLLIElement | null)[]>([])\n const scrollBehaviorRef = useRef<ScrollBehavior>(\"smooth\")\n const placesLibrary = useMapsLibrary(\"places\", googleMapsApiKey)\n const allowedTypesSet = useMemo(() => {\n if (!allowedTypes) {\n return DEFAULT_ALLOWED_TYPES\n }\n\n const newSet = new Set<string>()\n for (const type of allowedTypes) {\n newSet.add(type)\n }\n return newSet\n }, [allowedTypes])\n\n useEffect(() => {\n setInputValue(value ?? \"\")\n hasUserTyped.current = false\n }, [value])\n\n useEffect(() => {\n if (isSelecting.current) {\n isSelecting.current = false\n return\n }\n\n const trimmed = inputValue.trim()\n\n if (trimmed === \"\") {\n setIsLoading(false)\n } else {\n setIsLoading(true)\n }\n\n let isActive = true\n\n const handler = setTimeout(() => {\n if (!isActive) {\n return\n }\n\n if (trimmed === \"\") {\n setPredictions([])\n setIsDropdownOpen(false)\n sessionTokenRef.current = null\n if (value !== \"\") {\n onValueChange(\"\")\n }\n return\n }\n\n if (!placesLibrary) return\n\n const { AutocompleteSuggestion, AutocompleteSessionToken } = placesLibrary\n\n if (!AutocompleteSuggestion || !AutocompleteSessionToken) {\n console.error(\"AddressAutocompleteInput: missing AutocompleteSuggestion or AutocompleteSessionToken exports\")\n setPredictions([])\n setIsDropdownOpen(false)\n setIsLoading(false)\n return\n }\n\n if (!sessionTokenRef.current) {\n sessionTokenRef.current = new AutocompleteSessionToken()\n }\n\n const request: google.maps.places.AutocompleteRequest = {\n input: inputValue,\n sessionToken: sessionTokenRef.current ?? undefined,\n includedRegionCodes: [\"fr\"],\n }\n if (locationRestriction) {\n request.locationRestriction = locationRestriction\n }\n\n AutocompleteSuggestion.fetchAutocompleteSuggestions(request)\n .then((response: { suggestions: google.maps.places.AutocompleteSuggestion[] }) => {\n if (!isActive) {\n return\n }\n\n const placePredictions = response.suggestions\n .map((suggestion: google.maps.places.AutocompleteSuggestion) => suggestion.placePrediction)\n .filter((prediction): prediction is google.maps.places.PlacePrediction => Boolean(prediction))\n\n const combinedPredictions = buildDisplayPredictions(placePredictions, allowedTypesSet)\n\n const singlePrediction = combinedPredictions[0]\n const hasExactMatch =\n singlePrediction && combinedPredictions.length === 1 && isExactMatch(singlePrediction, inputValue)\n\n if (!hasUserTyped.current && hasExactMatch) {\n setPredictions(combinedPredictions)\n setIsDropdownOpen(false)\n setIsLoading(false)\n return\n }\n\n if (combinedPredictions.length > 0) {\n setPredictions(combinedPredictions)\n if (hasUserTyped.current) {\n setIsDropdownOpen(true)\n }\n setHighlightedIndex(-1)\n } else {\n setPredictions([])\n setIsDropdownOpen(false)\n }\n setIsLoading(false)\n })\n .catch((error: unknown) => {\n if (!isActive) {\n return\n }\n console.error(\"AddressAutocompleteInput: suggestion fetch failed\", error)\n setPredictions([])\n setIsDropdownOpen(false)\n setIsLoading(false)\n })\n }, 300)\n\n return () => {\n isActive = false\n clearTimeout(handler)\n }\n }, [inputValue, placesLibrary, onValueChange, value, locationRestriction, allowedTypesSet])\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n inputRef.current &&\n !inputRef.current.contains(event.target as Node) &&\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setIsDropdownOpen(false)\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside)\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside)\n }\n }, [])\n\n const handleSelectPrediction = (prediction: google.maps.places.PlacePrediction) => {\n isSelecting.current = true\n const newAddress = getDisplayText(prediction)\n setInputValue(newAddress)\n onValueChange(newAddress)\n setPredictions([])\n setIsDropdownOpen(false)\n setIsLoading(false)\n sessionTokenRef.current = null\n }\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n hasUserTyped.current = true\n setInputValue(e.target.value)\n }\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (!isDropdownOpen || predictions.length === 0) {\n if (e.key === \"Enter\") {\n e.preventDefault()\n onValueChange(inputValue)\n setIsDropdownOpen(false)\n sessionTokenRef.current = null\n }\n return\n }\n\n if (e.key === \"ArrowDown\") {\n scrollBehaviorRef.current = e.repeat ? \"auto\" : \"smooth\"\n e.preventDefault()\n setHighlightedIndex(prev => {\n if (predictions.length === 0) {\n return -1\n }\n return prev < 0 ? 0 : (prev + 1) % predictions.length\n })\n } else if (e.key === \"ArrowUp\") {\n scrollBehaviorRef.current = e.repeat ? \"auto\" : \"smooth\"\n e.preventDefault()\n setHighlightedIndex(prev => {\n if (predictions.length === 0) {\n return -1\n }\n if (prev <= 0) {\n return predictions.length - 1\n }\n return (prev - 1) % predictions.length\n })\n } else if (e.key === \"Enter\") {\n e.preventDefault()\n if (highlightedIndex > -1 && predictions[highlightedIndex]) {\n handleSelectPrediction(predictions[highlightedIndex])\n } else {\n onValueChange(inputValue)\n setIsDropdownOpen(false)\n sessionTokenRef.current = null\n }\n } else if (e.key === \"Escape\") {\n setIsDropdownOpen(false)\n }\n }\n\n const handleBlur = () => {\n setIsDropdownOpen(false)\n if (value !== inputValue) {\n onValueChange(inputValue)\n }\n sessionTokenRef.current = null\n }\n\n const shimName = autofillShimName ?? (name ? `${name}_shim` : undefined)\n\n useEffect(() => {\n if (!isDropdownOpen || highlightedIndex < 0) {\n scrollBehaviorRef.current = \"smooth\"\n return\n }\n\n const item = optionRefs.current[highlightedIndex]\n const list = dropdownRef.current\n\n if (!item || !list) {\n scrollBehaviorRef.current = \"smooth\"\n return\n }\n\n const behavior = scrollBehaviorRef.current\n scrollBehaviorRef.current = \"smooth\"\n\n const top = item.offsetTop\n const bottom = top + item.offsetHeight\n const viewTop = list.scrollTop\n const viewBottom = viewTop + list.clientHeight\n\n if (top >= viewTop && bottom <= viewBottom) {\n return\n }\n\n item.scrollIntoView({\n block: \"nearest\",\n behavior,\n })\n }, [highlightedIndex, isDropdownOpen])\n\n optionRefs.current.length = predictions.length\n\n return (\n <div className=\"relative\">\n {shimName && (\n <input\n tabIndex={-1}\n autoComplete=\"street-address\"\n name={shimName}\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n left: \"-9999px\",\n top: \"-9999px\",\n height: \"1px\",\n width: \"1px\",\n }}\n />\n )}\n <label htmlFor={id} className=\"text-left block text-sm font-medium text-gray-700 mb-1 cursor-pointer\">\n {label}\n </label>\n <div className=\"relative\">\n <Input\n ref={inputRef}\n id={id}\n type=\"text\"\n placeholder={placeholder}\n name={name ?? `${id}_input`}\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={() => {\n if (predictions.length > 0 && inputValue) {\n setIsDropdownOpen(true)\n }\n }}\n onBlur={handleBlur}\n disabled={disabled}\n autoComplete=\"new-password\"\n className={cn(\"w-full\", isLoading && \"pr-9\", className)}\n />\n {isLoading && (\n <Loader2\n className=\"pointer-events-none absolute right-3 top-1/2 h-4 w-4 -translate-y-1/2 animate-spin text-gray-400\"\n aria-hidden=\"true\"\n />\n )}\n </div>\n {isDropdownOpen && predictions.length > 0 && (\n <ul\n ref={dropdownRef}\n className=\"absolute z-10 mt-1 w-full max-h-60 overflow-y-auto rounded-md border border-gray-200 bg-white text-left shadow-lg\"\n role=\"listbox\"\n >\n {predictions.map((prediction, index) => (\n <li\n key={getPredictionId(prediction, index)}\n ref={node => {\n optionRefs.current[index] = node\n }}\n className={clsx(\n \"cursor-pointer px-3 py-2 text-sm text-gray-700 hover:bg-gray-100\",\n { \"bg-gray-100\": highlightedIndex === index },\n )}\n role=\"option\"\n onMouseDown={e => {\n e.preventDefault()\n handleSelectPrediction(prediction)\n }}\n >\n <PredictionItem prediction={prediction} />\n </li>\n ))}\n </ul>\n )}\n </div>\n )\n}\n"],"names":["DEFAULT_ALLOWED_TYPES","Set","getDisplayText","prediction","text","replace","trim","PredictionItem","t0","$","_c","displayText","parts","t1","Symbol","for","bb0","fullText","matches","wasCountryRemoved","length","lastIndex","forEach","substring","index","startOffset","endOffset","Math","min","push","matched","jsx","max","t2","isAllowedPrediction","allowedTypes","types","size","some","type","has","getPredictionId","placeId","getUniquePredictions","predictions","map","Map","key","set","Array","from","values","getFilteredPredictions","filter","sortPredictions","sort","a","b","aDistance","distanceMeters","Number","POSITIVE_INFINITY","bDistance","buildDisplayPredictions","isExactMatch","value","toLowerCase","AddressAutocompleteInput","id","label","placeholder","onValueChange","disabled","name","className","autofillShimName","googleMapsApiKey","locationRestriction","inputValue","setInputValue","useState","setPredictions","isDropdownOpen","setIsDropdownOpen","highlightedIndex","setHighlightedIndex","isLoading","setIsLoading","inputRef","useRef","dropdownRef","isSelecting","hasUserTyped","sessionTokenRef","optionRefs","scrollBehaviorRef","placesLibrary","useMapsLibrary","allowedTypesSet","useMemo","newSet","add","useEffect","current","trimmed","isActive","handler","setTimeout","AutocompleteSuggestion","AutocompleteSessionToken","console","error","request","input","sessionToken","undefined","includedRegionCodes","fetchAutocompleteSuggestions","then","response","placePredictions","suggestions","suggestion","placePrediction","Boolean","combinedPredictions","singlePrediction","hasExactMatch","catch","clearTimeout","handleClickOutside","event","contains","target","document","addEventListener","removeEventListener","handleSelectPrediction","newAddress","handleInputChange","e","handleKeyDown","preventDefault","repeat","prev","handleBlur","shimName","item","list","behavior","top","offsetTop","bottom","offsetHeight","viewTop","scrollTop","viewBottom","clientHeight","scrollIntoView","block","jsxs","position","left","height","width","Input","cn","Loader2","node","clsx"],"mappings":";;;;;;;;AASA,MAAMA,KAAwB,oBAAIC,IAAI,CACpC,kBACA,SACA,WACA,cACA,gBACA,eACA,uBACA,uBACA,uBACA,uBACA,uBACA,+BACA,+BACA,+BACA,+BACA,+BACA,+BACA,+BACA,eACA,YACA,WACA,WACA,aACA,aACA,gBACA,mBACA,WACA,iBACA,iBAAiB,CAClB,GAEKC,IAAiBA,CAACC,OACLA,EAAWC,MAAMA,QAAQ,IAC1BC,QAAQ,aAAa,EAAE,EAAEC,KAAAA,GAGrCC,KAAiBC,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAAA,EAAA,CAAA,GAAC;AAAA,IAAAP,YAAAA;AAAAA,EAAAA,IAAAK;AAAkE,MAAAG,GAAAC,GAAAC;AAAA,MAAAJ,SAAAN,GAAA;AAO/EU,IAAAA,IAAAC,uBAAkBC,IAAlB,6BAAiB;AAACC,IAAAA,GAAA;AAN3BL,MAAAA,IAAoBT,EAAeC,CAAU;AAC7C,YAAAc,IAAiBd,EAAUC,MAAWA,QAArB,IACjBc,IAAgBf,EAAUC,MAAcc,WAAxB,CAAA,GAChBC,IAA0BR,EAAWS,SAAUH,EAAQG;AAEvD,UAAIF,EAAOE,WAAY,GAAC;AACfP,QAAAA,wCAAGF,UAAAA,EAAAA,CAAW;AAAd,cAAAK;AAAAA,MAAkB;AAG3BJ,MAAAA,IAA2B,CAAA;AAC3B,UAAAS,IAAgB;AAEhBH,MAAAA,EAAOI,QAAS,CAAAC,GAAAC,MAAA;AACd,YAAIL,KAAqBI,EAASE,eAAgBd,EAAWS;AAAO;AAIpE,cAAAK,IAAoBF,EAASE,aAC7BC,IAAkBC,KAAIC,IAAKL,EAASG,WAAYf,EAAWS,MAAO;AAMlE,YAJIK,IAAcJ,KAChBT,EAAKiB,KAAMlB,EAAWY,UAAWF,GAAWI,CAAW,CAAC,GAGtDC,IAAYD,GAAW;AACzB,gBAAAK,IAAgBnB,EAAWY,UAAWE,GAAaC,CAAS;AAC5Dd,UAAAA,EAAKiB,KAAME,gBAAAA,EAAAA,IAAA,UAAA,EAAqBD,UAAAA,EAAAA,GAARN,CAAgB,CAAS;AAAA,QAAC;AAGpDH,QAAAA,IAAYM,KAAIK,IAAKX,GAAWK,CAAS;AAAA,MAAhC,CACV,GAEGL,IAAYV,EAAWS,UACzBR,EAAKiB,KAAMlB,EAAWY,UAAWF,CAAS,CAAC;AAAA,IAC5C;AAAAZ,IAAAA,OAAAN,GAAAM,OAAAE,GAAAF,OAAAG,GAAAH,OAAAI;AAAAA,EAAA;AAAAF,IAAAA,IAAAF,EAAA,CAAA,GAAAG,IAAAH,EAAA,CAAA,GAAAI,IAAAJ,EAAA,CAAA;AAAA,MAAAI,MAAAC,uBAAAC,IAAA,6BAAA;AAAA,WAAAF;AAED,MAAID,EAAKQ,WAAY,GAAC;AAAA,QAAAa;AAAA,WAAAxB,SAAAE,KACbsB,wCAAGtB,UAAAA,EAAAA,CAAW,GAAIF,OAAAE,GAAAF,OAAAwB,KAAAA,IAAAxB,EAAA,CAAA,GAAlBwB;AAAAA,EAAkB;AAC1B,MAAAA;AAAA,SAAAxB,SAAAG,KAEMqB,wCAAGrB,UAAAA,EAAAA,CAAK,GAAIH,OAAAG,GAAAH,OAAAwB,KAAAA,IAAAxB,EAAA,CAAA,GAAZwB;AAAY,GAGfC,KAAsBA,CAC1B/B,GACAgC,MAEI,CAAChC,EAAWiC,SAASjC,EAAWiC,MAAMhB,WAAW,KAIjD,CAACe,KAAgBA,EAAaE,SAAS,IAClC,KAGFlC,EAAWiC,MAAME,KAAKC,OAAQJ,EAAaK,IAAID,CAAI,CAAC,GAGvDE,KAAkBA,CAACtC,GAAgDqB,MACvErB,EAAWuC,WAAW,GAAGvC,EAAWC,MAAMA,QAAQ,YAAY,IAAIoB,CAAK,IAEnEmB,KAAuBA,CAACC,MAAsD;AAClF,QAAMC,wBAAUC,IAAAA;AAEhBF,SAAAA,EAAYtB,QAAQnB,CAAAA,MAAc;AAChC,UAAM4C,IAAM5C,EAAWuC;AAEvB,IAAKK,MAIAF,EAAIL,IAAIO,CAAG,KACdF,EAAIG,IAAID,GAAK5C,CAAU;AAAA,EAE3B,CAAC,GAEM8C,MAAMC,KAAKL,EAAIM,OAAAA,CAAQ;AAChC,GAEMC,KAAyBA,CAC7BR,GACAT,MACGS,EAAYS,OAAOlD,CAAAA,MAAc+B,GAAoB/B,GAAYgC,CAAY,CAAC,GAE7EmB,KAAkBA,CAACV,MACvBA,EAAYW,KAAK,CAACC,GAAGC,MAAM;AACzB,QAAMC,IAAYF,EAAEG,kBAAkBC,OAAOC,mBACvCC,IAAYL,EAAEE,kBAAkBC,OAAOC;AAE7C,SAAOH,IAAYI;AACrB,CAAC,GAEGC,KAA0BA,CAC9BnB,GACAT,MACGmB,GAAgBF,GAAuBT,GAAqBC,CAAW,GAAGT,CAAY,CAAC,GAEtF6B,KAAeA,CAAC7D,GAAgD8D,MACpD/D,EAAeC,CAAU,EAC1B+D,YAAAA,MAAkBD,EAAM3D,KAAAA,EAAO4D,YAAAA,GAGnCC,KAA2BA,CAAC;AAAA,EACvCC,IAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAC,aAAAA;AAAAA,EACAL,OAAAA;AAAAA,EACAM,eAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,MAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAC,kBAAAA;AAAAA,EACAC,kBAAAA;AAAAA,EACAC,qBAAAA;AAAAA,EACA1C,cAAAA;AAcF,MAAM;AACJ,QAAM,CAAC2C,GAAYC,CAAa,IAAIC,EAASf,KAAS,EAAE,GAClD,CAACrB,GAAaqC,CAAc,IAAID,EAA+C,CAAA,CAAE,GACjF,CAACE,GAAgBC,CAAiB,IAAIH,EAAS,EAAK,GACpD,CAACI,GAAkBC,CAAmB,IAAIL,EAAS,EAAE,GACrD,CAACM,GAAWC,CAAY,IAAIP,EAAS,EAAK,GAE1CQ,IAAWC,EAAyB,IAAI,GACxCC,IAAcD,EAAyB,IAAI,GAC3CE,IAAcF,EAAO,EAAK,GAC1BG,IAAeH,EAAO,EAAK,GAC3BI,IAAkBJ,EAA2D,IAAI,GACjFK,IAAaL,EAAiC,EAAE,GAChDM,IAAoBN,EAAuB,QAAQ,GACnDO,IAAgBC,GAAe,UAAUrB,CAAgB,GACzDsB,IAAkBC,GAAQ,MAAM;AACpC,QAAI,CAAChE;AACH,aAAOnC;AAGT,UAAMoG,wBAAanG,IAAAA;AACnB,eAAWsC,KAAQJ;AACjBiE,MAAAA,EAAOC,IAAI9D,CAAI;AAEjB,WAAO6D;AAAAA,EACT,GAAG,CAACjE,CAAY,CAAC;AAEjBmE,EAAAA,EAAU,MAAM;AACdvB,IAAAA,EAAcd,KAAS,EAAE,GACzB2B,EAAaW,UAAU;AAAA,EACzB,GAAG,CAACtC,CAAK,CAAC,GAEVqC,EAAU,MAAM;AACd,QAAIX,EAAYY,SAAS;AACvBZ,MAAAA,EAAYY,UAAU;AACtB;AAAA,IACF;AAEA,UAAMC,IAAU1B,EAAWxE,KAAAA;AAE3B,IACEiF,EADEiB,MAAY,EACI;AAKpB,QAAIC,IAAW;AAEf,UAAMC,IAAUC,WAAW,MAAM;AAC/B,UAAI,CAACF;AACH;AAGF,UAAID,MAAY,IAAI;AAClBvB,QAAAA,EAAe,CAAA,CAAE,GACjBE,EAAkB,EAAK,GACvBU,EAAgBU,UAAU,MACtBtC,MAAU,MACZM,EAAc,EAAE;AAElB;AAAA,MACF;AAEA,UAAI,CAACyB,EAAe;AAEpB,YAAM;AAAA,QAAEY,wBAAAA;AAAAA,QAAwBC,0BAAAA;AAAAA,MAAAA,IAA6Bb;AAE7D,UAAI,CAACY,KAA0B,CAACC,GAA0B;AACxDC,gBAAQC,MAAM,8FAA8F,GAC5G9B,EAAe,CAAA,CAAE,GACjBE,EAAkB,EAAK,GACvBI,EAAa,EAAK;AAClB;AAAA,MACF;AAEA,MAAKM,EAAgBU,YACnBV,EAAgBU,UAAU,IAAIM,EAAAA;AAGhC,YAAMG,IAAkD;AAAA,QACtDC,OAAOnC;AAAAA,QACPoC,cAAcrB,EAAgBU,WAAWY;AAAAA,QACzCC,qBAAqB,CAAC,IAAI;AAAA,MAAA;AAE5B,MAAIvC,MACFmC,EAAQnC,sBAAsBA,IAGhC+B,EAAuBS,6BAA6BL,CAAO,EACxDM,KAAK,CAACC,MAA2E;AAChF,YAAI,CAACd;AACH;AAGF,cAAMe,IAAmBD,EAASE,YAC/B5E,IAAI,CAAC6E,MAA0DA,EAAWC,eAAe,EACzFtE,OAAO,CAAClD,MAAiEyH,EAAQzH,CAAW,GAEzF0H,IAAsB9D,GAAwByD,GAAkBtB,CAAe,GAE/E4B,IAAmBD,EAAoB,CAAC,GACxCE,IACJD,KAAoBD,EAAoBzG,WAAW,KAAK4C,GAAa8D,GAAkBhD,CAAU;AAEnG,YAAI,CAACc,EAAaW,WAAWwB,GAAe;AAC1C9C,UAAAA,EAAe4C,CAAmB,GAClC1C,EAAkB,EAAK,GACvBI,EAAa,EAAK;AAClB;AAAA,QACF;AAEA,QAAIsC,EAAoBzG,SAAS,KAC/B6D,EAAe4C,CAAmB,GAC9BjC,EAAaW,WACfpB,EAAkB,EAAI,GAExBE,EAAoB,EAAE,MAEtBJ,EAAe,CAAA,CAAE,GACjBE,EAAkB,EAAK,IAEzBI,EAAa,EAAK;AAAA,MACpB,CAAC,EACAyC,MAAM,CAACjB,MAAmB;AACzB,QAAKN,MAGLK,QAAQC,MAAM,qDAAqDA,CAAK,GACxE9B,EAAe,CAAA,CAAE,GACjBE,EAAkB,EAAK,GACvBI,EAAa,EAAK;AAAA,MACpB,CAAC;AAAA,IACL,GAAG,GAAG;AAEN,WAAO,MAAM;AACXkB,MAAAA,IAAW,IACXwB,aAAavB,CAAO;AAAA,IACtB;AAAA,EACF,GAAG,CAAC5B,GAAYkB,GAAezB,GAAeN,GAAOY,GAAqBqB,CAAe,CAAC,GAE1FI,EAAU,MAAM;AACd,UAAM4B,IAAqBA,CAACC,MAAsB;AAChD,MACE3C,EAASe,WACT,CAACf,EAASe,QAAQ6B,SAASD,EAAME,MAAc,KAC/C3C,EAAYa,WACZ,CAACb,EAAYa,QAAQ6B,SAASD,EAAME,MAAc,KAElDlD,EAAkB,EAAK;AAAA,IAE3B;AACAmD,oBAASC,iBAAiB,aAAaL,CAAkB,GAClD,MAAM;AACXI,eAASE,oBAAoB,aAAaN,CAAkB;AAAA,IAC9D;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,QAAMO,IAAyBA,CAACtI,MAAmD;AACjFwF,IAAAA,EAAYY,UAAU;AACtB,UAAMmC,IAAaxI,EAAeC,CAAU;AAC5C4E,IAAAA,EAAc2D,CAAU,GACxBnE,EAAcmE,CAAU,GACxBzD,EAAe,CAAA,CAAE,GACjBE,EAAkB,EAAK,GACvBI,EAAa,EAAK,GAClBM,EAAgBU,UAAU;AAAA,EAC5B,GAEMoC,IAAoBA,CAACC,MAAqC;AAC9DhD,IAAAA,EAAaW,UAAU,IACvBxB,EAAc6D,EAAEP,OAAOpE,KAAK;AAAA,EAC9B,GAEM4E,IAAgBA,CAACD,MAAuC;AAC5D,QAAI,CAAC1D,KAAkBtC,EAAYxB,WAAW,GAAG;AAC/C,MAAIwH,EAAE7F,QAAQ,YACZ6F,EAAEE,eAAAA,GACFvE,EAAcO,CAAU,GACxBK,EAAkB,EAAK,GACvBU,EAAgBU,UAAU;AAE5B;AAAA,IACF;AAEA,IAAIqC,EAAE7F,QAAQ,eACZgD,EAAkBQ,UAAUqC,EAAEG,SAAS,SAAS,UAChDH,EAAEE,eAAAA,GACFzD,EAAoB2D,CAAAA,MACdpG,EAAYxB,WAAW,IAClB,KAEF4H,IAAO,IAAI,KAAKA,IAAO,KAAKpG,EAAYxB,MAChD,KACQwH,EAAE7F,QAAQ,aACnBgD,EAAkBQ,UAAUqC,EAAEG,SAAS,SAAS,UAChDH,EAAEE,eAAAA,GACFzD,EAAoB2D,CAAAA,MACdpG,EAAYxB,WAAW,IAClB,KAEL4H,KAAQ,IACHpG,EAAYxB,SAAS,KAEtB4H,IAAO,KAAKpG,EAAYxB,MACjC,KACQwH,EAAE7F,QAAQ,WACnB6F,EAAEE,eAAAA,GACE1D,IAAmB,MAAMxC,EAAYwC,CAAgB,IACvDqD,EAAuB7F,EAAYwC,CAAgB,CAAC,KAEpDb,EAAcO,CAAU,GACxBK,EAAkB,EAAK,GACvBU,EAAgBU,UAAU,SAEnBqC,EAAE7F,QAAQ,YACnBoC,EAAkB,EAAK;AAAA,EAE3B,GAEM8D,IAAaA,MAAM;AACvB9D,IAAAA,EAAkB,EAAK,GACnBlB,MAAUa,KACZP,EAAcO,CAAU,GAE1Be,EAAgBU,UAAU;AAAA,EAC5B,GAEM2C,IAAWvE,MAAqBF,IAAO,GAAGA,CAAI,UAAU0C;AAE9Db,SAAAA,EAAU,MAAM;AACd,QAAI,CAACpB,KAAkBE,IAAmB,GAAG;AAC3CW,MAAAA,EAAkBQ,UAAU;AAC5B;AAAA,IACF;AAEA,UAAM4C,IAAOrD,EAAWS,QAAQnB,CAAgB,GAC1CgE,IAAO1D,EAAYa;AAEzB,QAAI,CAAC4C,KAAQ,CAACC,GAAM;AAClBrD,MAAAA,EAAkBQ,UAAU;AAC5B;AAAA,IACF;AAEA,UAAM8C,IAAWtD,EAAkBQ;AACnCR,IAAAA,EAAkBQ,UAAU;AAE5B,UAAM+C,IAAMH,EAAKI,WACXC,IAASF,IAAMH,EAAKM,cACpBC,IAAUN,EAAKO,WACfC,IAAaF,IAAUN,EAAKS;AAElC,IAAIP,KAAOI,KAAWF,KAAUI,KAIhCT,EAAKW,eAAe;AAAA,MAClBC,OAAO;AAAA,MACPV,UAAAA;AAAAA,IAAAA,CACD;AAAA,EACH,GAAG,CAACjE,GAAkBF,CAAc,CAAC,GAErCY,EAAWS,QAAQnF,SAASwB,EAAYxB,QAGtC4I,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,YACZd,UAAAA;AAAAA,IAAAA,KACCnH,gBAAAA,EAAAA,IAAC,SAAA,EACC,UAAU,IACV,cAAa,kBACb,MAAMmH,GACN,eAAY,QACZ,OAAO;AAAA,MACLe,UAAU;AAAA,MACVC,MAAM;AAAA,MACNZ,KAAK;AAAA,MACLa,QAAQ;AAAA,MACRC,OAAO;AAAA,IAAA,GACP;AAAA,0BAGL,SAAA,EAAM,SAAShG,GAAI,WAAU,yEAC3BC,UAAAA,GACH;AAAA,IACA2F,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,YACb,UAAA;AAAA,MAAAjI,gBAAAA,MAACsI,MACC,KAAK7E,GACL,IAAApB,GACA,MAAK,QACL,aAAAE,GACA,MAAMG,KAAQ,GAAGL,CAAE,UACnB,OAAOU,GACP,UAAU6D,GACV,WAAWE,GACX,SAAS,MAAM;AACb,QAAIjG,EAAYxB,SAAS,KAAK0D,KAC5BK,EAAkB,EAAI;AAAA,MAE1B,GACA,QAAQ8D,GACR,UAAAzE,GACA,cAAa,gBACb,WAAW8F,GAAG,UAAUhF,KAAa,QAAQZ,CAAS,EAAA,CAAE;AAAA,MAEzDY,KACCvD,gBAAAA,EAAAA,IAACwI,IAAA,EACC,WAAU,oGACV,eAAY,OAAA,CAAM;AAAA,IAAA,GAGxB;AAAA,IACCrF,KAAkBtC,EAAYxB,SAAS,2BACrC,MAAA,EACC,KAAKsE,GACL,WAAU,qHACV,MAAK,WAEJ9C,UAAAA,EAAYC,IAAI,CAAC1C,GAAYqB,MAC5BO,gBAAAA,EAAAA,IAAC,MAAA,EAEC,KAAKyI,CAAAA,MAAQ;AACX1E,MAAAA,EAAWS,QAAQ/E,CAAK,IAAIgJ;AAAAA,IAC9B,GACA,WAAWC,GACT,oEACA;AAAA,MAAE,eAAerF,MAAqB5D;AAAAA,IAAAA,CACxC,GACA,MAAK,UACL,aAAaoH,CAAAA,MAAK;AAChBA,MAAAA,EAAEE,eAAAA,GACFL,EAAuBtI,CAAU;AAAA,IACnC,GAEA,UAAA4B,gBAAAA,EAAAA,IAACxB,IAAA,EAAe,YAAYJ,GAAW,EAAA,GAdlCsC,GAAgBtC,GAAYqB,CAAK,CAexC,CACD,EAAA,CACH;AAAA,EAAA,GAEJ;AAEJ;"}
package/dist/index31.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import * as s from "react";
2
- import { composeEventHandlers as h } from "./index55.js";
3
- import { Primitive as w, dispatchDiscreteCustomEvent as k } from "./index56.js";
4
- import { useComposedRefs as R } from "./index57.js";
5
- import { useCallbackRef as g } from "./index58.js";
6
- import { useEscapeKeydown as U } from "./index59.js";
2
+ import { composeEventHandlers as h } from "./index53.js";
3
+ import { Primitive as w, dispatchDiscreteCustomEvent as k } from "./index54.js";
4
+ import { useComposedRefs as R } from "./index55.js";
5
+ import { useCallbackRef as g } from "./index56.js";
6
+ import { useEscapeKeydown as U } from "./index57.js";
7
7
  import { j as x } from "./index30.js";
8
8
  var j = "DismissableLayer", p = "dismissableLayer.update", z = "dismissableLayer.pointerDownOutside", H = "dismissableLayer.focusOutside", C, T = s.createContext({
9
9
  layers: /* @__PURE__ */ new Set(),
package/dist/index32.js CHANGED
@@ -1,28 +1,28 @@
1
1
  import l, { useMemo as T, useCallback as h, useRef as Re } from "react";
2
- import { DateLib as Ze } from "./index107.js";
3
- import { createGetModifiers as Ie } from "./index108.js";
4
- import { getClassNamesForModifiers as Ge } from "./index109.js";
5
- import { getComponents as He } from "./index110.js";
6
- import { getDataAttributes as _e } from "./index111.js";
7
- import { getDefaultClassNames as Ue } from "./index112.js";
8
- import { getFormatters as je } from "./index113.js";
9
- import { getLabels as Ve } from "./index114.js";
10
- import { getMonthOptions as $e } from "./index115.js";
11
- import { getStyleForModifiers as qe } from "./index116.js";
12
- import { getWeekdays as ze } from "./index117.js";
13
- import { getYearOptions as Je } from "./index118.js";
14
- import { createNoonOverrides as Qe } from "./index119.js";
15
- import { UI as n, DayFlag as Xe, SelectionState as w } from "./index120.js";
16
- import { useAnimation as et } from "./index121.js";
17
- import { useCalendar as tt } from "./index122.js";
18
- import { dayPickerContext as at } from "./index123.js";
19
- import { useFocus as ot } from "./index124.js";
20
- import { useSelection as nt } from "./index125.js";
21
- import { convertMatchersToTimeZone as K } from "./index126.js";
22
- import { rangeIncludesDate as st } from "./index127.js";
23
- import { toTimeZone as k } from "./index128.js";
24
- import { isDateRange as rt } from "./index129.js";
25
- import { enUS as it } from "./index130.js";
2
+ import { DateLib as Ze } from "./index106.js";
3
+ import { createGetModifiers as Ie } from "./index107.js";
4
+ import { getClassNamesForModifiers as Ge } from "./index108.js";
5
+ import { getComponents as He } from "./index109.js";
6
+ import { getDataAttributes as _e } from "./index110.js";
7
+ import { getDefaultClassNames as Ue } from "./index111.js";
8
+ import { getFormatters as je } from "./index112.js";
9
+ import { getLabels as Ve } from "./index113.js";
10
+ import { getMonthOptions as $e } from "./index114.js";
11
+ import { getStyleForModifiers as qe } from "./index115.js";
12
+ import { getWeekdays as ze } from "./index116.js";
13
+ import { getYearOptions as Je } from "./index117.js";
14
+ import { createNoonOverrides as Qe } from "./index118.js";
15
+ import { UI as n, DayFlag as Xe, SelectionState as w } from "./index119.js";
16
+ import { useAnimation as et } from "./index120.js";
17
+ import { useCalendar as tt } from "./index121.js";
18
+ import { dayPickerContext as at } from "./index122.js";
19
+ import { useFocus as ot } from "./index123.js";
20
+ import { useSelection as nt } from "./index124.js";
21
+ import { convertMatchersToTimeZone as K } from "./index125.js";
22
+ import { rangeIncludesDate as st } from "./index126.js";
23
+ import { toTimeZone as k } from "./index127.js";
24
+ import { isDateRange as rt } from "./index128.js";
25
+ import { enUS as it } from "./index129.js";
26
26
  function Yt(R) {
27
27
  let e = R;
28
28
  const u = e.timeZone;
package/dist/index33.js CHANGED
@@ -1,6 +1,6 @@
1
- import { defaultDateLib as A } from "./index107.js";
2
- import { rangeIncludesDate as p } from "./index127.js";
3
- import { isDatesArray as a, isDateRange as I, isDayOfWeekType as g, isDateInterval as k, isDateAfterType as O, isDateBeforeType as W } from "./index129.js";
1
+ import { defaultDateLib as A } from "./index106.js";
2
+ import { rangeIncludesDate as p } from "./index126.js";
3
+ import { isDatesArray as a, isDateRange as I, isDayOfWeekType as g, isDateInterval as k, isDateAfterType as O, isDateBeforeType as W } from "./index128.js";
4
4
  function b(f, n, r = A) {
5
5
  const t = Array.isArray(n) ? n : [n], { isSameDay: o, differenceInCalendarDays: i, isAfter: D } = r;
6
6
  return t.some((e) => {
package/dist/index36.js CHANGED
@@ -1,4 +1,4 @@
1
- import { getCountryList as E } from "./index76.js";
1
+ import { getCountryList as E } from "./index74.js";
2
2
  import { getCountryCallingCode as s } from "./index40.js";
3
3
  const c = "US", u = E(), f = /* @__PURE__ */ new Map(), m = "__default_locale__", _ = Array.from(new Set(u.map((e) => s(e)))).sort((e, t) => t.length - e.length), O = _.reduce((e, t) => Math.max(e, t.length), 0), y = ["0011", "001", "011", "00", "810"];
4
4
  function R(e) {
package/dist/index37.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { MAX_DIAL_CODE_LENGTH as W, COMMON_IDD_PREFIXES as $, DEFAULT_COUNTRY as x, COUNTRY_DIAL_CODES as C } from "./index36.js";
2
2
  import { getCountryCallingCode as p } from "./index40.js";
3
- import { AsYouType as I } from "./index77.js";
4
- import { validatePhoneNumberLength as D } from "./index78.js";
3
+ import { AsYouType as I } from "./index75.js";
4
+ import { validatePhoneNumberLength as D } from "./index76.js";
5
5
  function g(t) {
6
6
  return t.replace(/\D/g, "");
7
7
  }
package/dist/index41.js CHANGED
@@ -1,26 +1,26 @@
1
1
  import * as t from "react";
2
2
  import * as Re from "react-dom";
3
- import { clamp as Te } from "./index60.js";
4
- import { composeEventHandlers as R } from "./index55.js";
5
- import { createCollection as et } from "./index61.js";
6
- import { useComposedRefs as D } from "./index57.js";
7
- import { createContextScope as tt } from "./index62.js";
8
- import { useDirection as ot } from "./index63.js";
3
+ import { clamp as Te } from "./index58.js";
4
+ import { composeEventHandlers as R } from "./index53.js";
5
+ import { createCollection as et } from "./index59.js";
6
+ import { useComposedRefs as D } from "./index55.js";
7
+ import { createContextScope as tt } from "./index60.js";
8
+ import { useDirection as ot } from "./index61.js";
9
9
  import { DismissableLayer as nt } from "./index31.js";
10
- import { useFocusGuards as rt } from "./index64.js";
11
- import { FocusScope as st } from "./index65.js";
12
- import { useId as ye } from "./index66.js";
13
- import { Root as ct, createPopperScope as Ee, Anchor as lt, Content as it, Arrow as at } from "./index67.js";
14
- import { Portal as dt } from "./index68.js";
15
- import { Primitive as N } from "./index56.js";
16
- import { createSlot as ut } from "./index69.js";
17
- import { useCallbackRef as pt } from "./index58.js";
18
- import { useControllableState as Pe } from "./index70.js";
19
- import { useLayoutEffect as V } from "./index71.js";
20
- import { usePrevious as ft } from "./index72.js";
21
- import { VISUALLY_HIDDEN_STYLES as mt } from "./index73.js";
22
- import { hideOthers as ht } from "./index74.js";
23
- import vt from "./index75.js";
10
+ import { useFocusGuards as rt } from "./index62.js";
11
+ import { FocusScope as st } from "./index63.js";
12
+ import { useId as ye } from "./index64.js";
13
+ import { Root as ct, createPopperScope as Ee, Anchor as lt, Content as it, Arrow as at } from "./index65.js";
14
+ import { Portal as dt } from "./index66.js";
15
+ import { Primitive as N } from "./index54.js";
16
+ import { createSlot as ut } from "./index67.js";
17
+ import { useCallbackRef as pt } from "./index56.js";
18
+ import { useControllableState as Pe } from "./index68.js";
19
+ import { useLayoutEffect as V } from "./index69.js";
20
+ import { usePrevious as ft } from "./index70.js";
21
+ import { VISUALLY_HIDDEN_STYLES as mt } from "./index71.js";
22
+ import { hideOthers as ht } from "./index72.js";
23
+ import vt from "./index73.js";
24
24
  import { j as d } from "./index30.js";
25
25
  var gt = [" ", "Enter", "ArrowUp", "ArrowDown"], St = [" ", "Enter"], G = "Select", [ie, ae, xt] = et(G), [ee] = tt(G, [
26
26
  xt,
package/dist/index49.js CHANGED
@@ -1,4 +1,4 @@
1
- import { __exports as e } from "./index53.js";
1
+ import { __exports as e } from "./index77.js";
2
2
  var s;
3
3
  function a() {
4
4
  if (s) return e;
package/dist/index50.js CHANGED
@@ -1,4 +1,4 @@
1
- import { __exports as s } from "./index54.js";
1
+ import { __exports as s } from "./index78.js";
2
2
  import J from "react";
3
3
  var j;
4
4
  function Z() {
package/dist/index53.js CHANGED
@@ -1,5 +1,10 @@
1
- var r = {};
1
+ function f(n, r, { checkForDefaultPrevented: t = !0 } = {}) {
2
+ return function(e) {
3
+ if (n?.(e), t === !1 || !e.defaultPrevented)
4
+ return r?.(e);
5
+ };
6
+ }
2
7
  export {
3
- r as __exports
8
+ f as composeEventHandlers
4
9
  };
5
10
  //# sourceMappingURL=index53.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index53.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index53.js","sources":["../../../node_modules/@radix-ui/primitive/dist/index.mjs"],"sourcesContent":["// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","event"],"mappings":"AAEA,SAASA,EAAqBC,GAAsBC,GAAiB,EAAE,0BAAAC,IAA2B,GAAI,IAAK,IAAI;AAC7G,SAAO,SAAqBC,GAAO;AAEjC,QADAH,IAAuBG,CAAK,GACxBD,MAA6B,MAAS,CAACC,EAAM;AAC/C,aAAOF,IAAkBE,CAAK;AAAA,EAElC;AACF;","x_google_ignoreList":[0]}
package/dist/index54.js CHANGED
@@ -1,5 +1,37 @@
1
- var e = {};
1
+ import * as p from "react";
2
+ import * as f from "react-dom";
3
+ import { createSlot as c } from "./index150.js";
4
+ import { j as u } from "./index30.js";
5
+ var l = [
6
+ "a",
7
+ "button",
8
+ "div",
9
+ "form",
10
+ "h2",
11
+ "h3",
12
+ "img",
13
+ "input",
14
+ "label",
15
+ "li",
16
+ "nav",
17
+ "ol",
18
+ "p",
19
+ "select",
20
+ "span",
21
+ "svg",
22
+ "ul"
23
+ ], h = l.reduce((t, i) => {
24
+ const o = c(`Primitive.${i}`), r = p.forwardRef((e, s) => {
25
+ const { asChild: m, ...a } = e, n = m ? o : i;
26
+ return typeof window < "u" && (window[/* @__PURE__ */ Symbol.for("radix-ui")] = !0), /* @__PURE__ */ u.jsx(n, { ...a, ref: s });
27
+ });
28
+ return r.displayName = `Primitive.${i}`, { ...t, [i]: r };
29
+ }, {});
30
+ function w(t, i) {
31
+ t && f.flushSync(() => t.dispatchEvent(i));
32
+ }
2
33
  export {
3
- e as __exports
34
+ h as Primitive,
35
+ w as dispatchDiscreteCustomEvent
4
36
  };
5
37
  //# sourceMappingURL=index54.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index54.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index54.js","sources":["../../../node_modules/@radix-ui/react-primitive/dist/index.mjs"],"sourcesContent":["// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["NODES","Primitive","primitive","node","Slot","createSlot","Node","React","props","forwardedRef","asChild","primitiveProps","Comp","jsx","dispatchDiscreteCustomEvent","target","event","ReactDOM"],"mappings":";;;;AAKA,IAAIA,IAAQ;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GACIC,IAAYD,EAAM,OAAO,CAACE,GAAWC,MAAS;AAChD,QAAMC,IAAOC,EAAW,aAAaF,CAAI,EAAE,GACrCG,IAAOC,EAAM,WAAW,CAACC,GAAOC,MAAiB;AACrD,UAAM,EAAE,SAAAC,GAAS,GAAGC,EAAc,IAAKH,GACjCI,IAAOF,IAAUN,IAAOD;AAC9B,WAAI,OAAO,SAAW,QACpB,OAAO,uBAAO,IAAI,UAAU,CAAC,IAAI,KAEZU,gBAAAA,EAAAA,IAAID,GAAM,EAAE,GAAGD,GAAgB,KAAKF,GAAc;AAAA,EAC3E,CAAC;AACD,SAAAH,EAAK,cAAc,aAAaH,CAAI,IAC7B,EAAE,GAAGD,GAAW,CAACC,CAAI,GAAGG,EAAI;AACrC,GAAG,CAAA,CAAE;AACL,SAASQ,EAA4BC,GAAQC,GAAO;AAClD,EAAID,KAAQE,EAAS,UAAU,MAAMF,EAAO,cAAcC,CAAK,CAAC;AAClE;","x_google_ignoreList":[0]}
package/dist/index55.js CHANGED
@@ -1,10 +1,52 @@
1
- function f(n, r, { checkForDefaultPrevented: t = !0 } = {}) {
2
- return function(e) {
3
- if (n?.(e), t === !1 || !e.defaultPrevented)
4
- return r?.(e);
1
+ import * as f from "react";
2
+ let s = 0;
3
+ const r = /* @__PURE__ */ new WeakMap(), i = typeof queueMicrotask == "function" ? queueMicrotask : (e) => Promise.resolve().then(e);
4
+ function o(e, t) {
5
+ if (typeof e == "function") {
6
+ if (t === null) {
7
+ const n = ++s;
8
+ r.set(e, n), i(() => {
9
+ r.get(e) === n && (e(null), r.get(e) === n && r.delete(e));
10
+ });
11
+ return;
12
+ }
13
+ return r.delete(e), e(t);
14
+ }
15
+ e != null && (e.current = t);
16
+ }
17
+ function a(...e) {
18
+ return (t) => {
19
+ let n = !1;
20
+ const c = e.map((l) => {
21
+ const u = o(l, t);
22
+ return !n && typeof u == "function" && (n = !0), u;
23
+ });
24
+ if (n)
25
+ return () => {
26
+ for (let l = 0; l < c.length; l += 1) {
27
+ const u = c[l];
28
+ typeof u == "function" ? u() : o(e[l], null);
29
+ }
30
+ };
5
31
  };
6
32
  }
33
+ function d(e, t) {
34
+ if (e.length !== t.length)
35
+ return !1;
36
+ for (let n = 0; n < e.length; n += 1)
37
+ if (e[n] !== t[n])
38
+ return !1;
39
+ return !0;
40
+ }
41
+ function p(...e) {
42
+ const t = f.useRef(null);
43
+ return (t.current == null || !d(t.current.refs, e)) && (t.current = {
44
+ callback: a(...e),
45
+ refs: e
46
+ }), t.current.callback;
47
+ }
7
48
  export {
8
- f as composeEventHandlers
49
+ a as composeRefs,
50
+ p as useComposedRefs
9
51
  };
10
52
  //# sourceMappingURL=index55.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index55.js","sources":["../../../node_modules/@radix-ui/primitive/dist/index.mjs"],"sourcesContent":["// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","event"],"mappings":"AAEA,SAASA,EAAqBC,GAAsBC,GAAiB,EAAE,0BAAAC,IAA2B,GAAI,IAAK,IAAI;AAC7G,SAAO,SAAqBC,GAAO;AAEjC,QADAH,IAAuBG,CAAK,GACxBD,MAA6B,MAAS,CAACC,EAAM;AAC/C,aAAOF,IAAkBE,CAAK;AAAA,EAElC;AACF;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index55.js","sources":["../src/lib/react-compose-refs.ts"],"sourcesContent":["import * as React from \"react\"\n\n\ntype PossibleCleanup = void | (() => void)\n\nlet nextDeferredNullId = 0\nconst deferredNullCalls = new WeakMap<React.RefCallback<unknown>, number>()\n\nconst scheduleMicrotask =\n typeof queueMicrotask === \"function\"\n ? queueMicrotask\n : (callback: () => void) => Promise.resolve().then(callback)\n\nfunction setRef<T>(ref: React.Ref<T> | undefined, value: T | null): PossibleCleanup {\n if (typeof ref === \"function\") {\n if (value === null) {\n const deferredNullId = ++nextDeferredNullId\n deferredNullCalls.set(ref, deferredNullId)\n\n scheduleMicrotask(() => {\n if (deferredNullCalls.get(ref) !== deferredNullId) {\n return\n }\n\n ref(null)\n if (deferredNullCalls.get(ref) === deferredNullId) {\n deferredNullCalls.delete(ref)\n }\n })\n\n return\n }\n\n deferredNullCalls.delete(ref)\n return ref(value)\n }\n\n if (ref != null) {\n ref.current = value\n }\n}\n\nfunction composeRefs<T>(...refs: Array<React.Ref<T> | undefined>) {\n return (node: T | null) => {\n let hasCleanup = false\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node)\n if (!hasCleanup && typeof cleanup === \"function\") {\n hasCleanup = true\n }\n return cleanup\n })\n\n if (hasCleanup) {\n return () => {\n for (let index = 0; index < cleanups.length; index += 1) {\n const cleanup = cleanups[index]\n\n if (typeof cleanup === \"function\") {\n cleanup()\n } else {\n setRef(refs[index], null)\n }\n }\n }\n }\n }\n}\n\nfunction haveSameRefs<T>(\n previousRefs: Array<React.Ref<T> | undefined>,\n nextRefs: Array<React.Ref<T> | undefined>,\n) {\n if (previousRefs.length !== nextRefs.length) {\n return false\n }\n\n for (let index = 0; index < previousRefs.length; index += 1) {\n if (previousRefs[index] !== nextRefs[index]) {\n return false\n }\n }\n\n return true\n}\n\nfunction useComposedRefs<T>(...refs: Array<React.Ref<T> | undefined>) {\n const composedRefsRef = React.useRef<{\n callback: ReturnType<typeof composeRefs<T>>\n refs: Array<React.Ref<T> | undefined>\n } | null>(null)\n\n if (\n composedRefsRef.current == null ||\n !haveSameRefs(composedRefsRef.current.refs, refs)\n ) {\n composedRefsRef.current = {\n callback: composeRefs(...refs),\n refs,\n }\n }\n\n return composedRefsRef.current.callback\n}\n\nexport {\n composeRefs,\n useComposedRefs,\n}\n"],"names":["nextDeferredNullId","deferredNullCalls","WeakMap","scheduleMicrotask","queueMicrotask","callback","Promise","resolve","then","setRef","ref","value","deferredNullId","set","get","delete","current","composeRefs","refs","node","hasCleanup","cleanups","map","cleanup","index","length","haveSameRefs","previousRefs","nextRefs","useComposedRefs","composedRefsRef","React","useRef"],"mappings":";AAKA,IAAIA,IAAqB;AACzB,MAAMC,wBAAwBC,QAAAA,GAExBC,IACJ,OAAOC,kBAAmB,aACtBA,iBACA,CAACC,MAAyBC,QAAQC,QAAAA,EAAUC,KAAKH,CAAQ;AAE/D,SAASI,EAAUC,GAA+BC,GAAkC;AAClF,MAAI,OAAOD,KAAQ,YAAY;AAC7B,QAAIC,MAAU,MAAM;AAClB,YAAMC,IAAiB,EAAEZ;AACzBC,MAAAA,EAAkBY,IAAIH,GAAKE,CAAc,GAEzCT,EAAkB,MAAM;AACtB,QAAIF,EAAkBa,IAAIJ,CAAG,MAAME,MAInCF,EAAI,IAAI,GACJT,EAAkBa,IAAIJ,CAAG,MAAME,KACjCX,EAAkBc,OAAOL,CAAG;AAAA,MAEhC,CAAC;AAED;AAAA,IACF;AAEAT,WAAAA,EAAkBc,OAAOL,CAAG,GACrBA,EAAIC,CAAK;AAAA,EAClB;AAEA,EAAID,KAAO,SACTA,EAAIM,UAAUL;AAElB;AAEA,SAASM,KAAkBC,GAAuC;AAChE,SAAO,CAACC,MAAmB;AACzB,QAAIC,IAAa;AACjB,UAAMC,IAAWH,EAAKI,IAAKZ,CAAAA,MAAQ;AACjC,YAAMa,IAAUd,EAAOC,GAAKS,CAAI;AAChC,aAAI,CAACC,KAAc,OAAOG,KAAY,eACpCH,IAAa,KAERG;AAAAA,IACT,CAAC;AAED,QAAIH;AACF,aAAO,MAAM;AACX,iBAASI,IAAQ,GAAGA,IAAQH,EAASI,QAAQD,KAAS,GAAG;AACvD,gBAAMD,IAAUF,EAASG,CAAK;AAE9B,UAAI,OAAOD,KAAY,aACrBA,EAAAA,IAEAd,EAAOS,EAAKM,CAAK,GAAG,IAAI;AAAA,QAE5B;AAAA,MACF;AAAA,EAEJ;AACF;AAEA,SAASE,EACPC,GACAC,GACA;AACA,MAAID,EAAaF,WAAWG,EAASH;AACnC,WAAO;AAGT,WAASD,IAAQ,GAAGA,IAAQG,EAAaF,QAAQD,KAAS;AACxD,QAAIG,EAAaH,CAAK,MAAMI,EAASJ,CAAK;AACxC,aAAO;AAIX,SAAO;AACT;AAEA,SAASK,KAAsBX,GAAuC;AACpE,QAAMY,IAAkBC,EAAMC,OAGpB,IAAI;AAEd,UACEF,EAAgBd,WAAW,QAC3B,CAACU,EAAaI,EAAgBd,QAAQE,MAAMA,CAAI,OAEhDY,EAAgBd,UAAU;AAAA,IACxBX,UAAUY,EAAY,GAAGC,CAAI;AAAA,IAC7BA,MAAAA;AAAAA,EAAAA,IAIGY,EAAgBd,QAAQX;AACjC;"}
package/dist/index56.js CHANGED
@@ -1,37 +1,11 @@
1
- import * as p from "react";
2
- import * as f from "react-dom";
3
- import { createSlot as c } from "./index79.js";
4
- import { j as u } from "./index30.js";
5
- var l = [
6
- "a",
7
- "button",
8
- "div",
9
- "form",
10
- "h2",
11
- "h3",
12
- "img",
13
- "input",
14
- "label",
15
- "li",
16
- "nav",
17
- "ol",
18
- "p",
19
- "select",
20
- "span",
21
- "svg",
22
- "ul"
23
- ], h = l.reduce((t, i) => {
24
- const o = c(`Primitive.${i}`), r = p.forwardRef((e, s) => {
25
- const { asChild: m, ...a } = e, n = m ? o : i;
26
- return typeof window < "u" && (window[/* @__PURE__ */ Symbol.for("radix-ui")] = !0), /* @__PURE__ */ u.jsx(n, { ...a, ref: s });
27
- });
28
- return r.displayName = `Primitive.${i}`, { ...t, [i]: r };
29
- }, {});
30
- function w(t, i) {
31
- t && f.flushSync(() => t.dispatchEvent(i));
1
+ import * as e from "react";
2
+ function c(r) {
3
+ const t = e.useRef(r);
4
+ return e.useEffect(() => {
5
+ t.current = r;
6
+ }), e.useMemo(() => (...u) => t.current?.(...u), []);
32
7
  }
33
8
  export {
34
- h as Primitive,
35
- w as dispatchDiscreteCustomEvent
9
+ c as useCallbackRef
36
10
  };
37
11
  //# sourceMappingURL=index56.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index56.js","sources":["../../../node_modules/@radix-ui/react-primitive/dist/index.mjs"],"sourcesContent":["// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["NODES","Primitive","primitive","node","Slot","createSlot","Node","React","props","forwardedRef","asChild","primitiveProps","Comp","jsx","dispatchDiscreteCustomEvent","target","event","ReactDOM"],"mappings":";;;;AAKA,IAAIA,IAAQ;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GACIC,IAAYD,EAAM,OAAO,CAACE,GAAWC,MAAS;AAChD,QAAMC,IAAOC,EAAW,aAAaF,CAAI,EAAE,GACrCG,IAAOC,EAAM,WAAW,CAACC,GAAOC,MAAiB;AACrD,UAAM,EAAE,SAAAC,GAAS,GAAGC,EAAc,IAAKH,GACjCI,IAAOF,IAAUN,IAAOD;AAC9B,WAAI,OAAO,SAAW,QACpB,OAAO,uBAAO,IAAI,UAAU,CAAC,IAAI,KAEZU,gBAAAA,EAAAA,IAAID,GAAM,EAAE,GAAGD,GAAgB,KAAKF,GAAc;AAAA,EAC3E,CAAC;AACD,SAAAH,EAAK,cAAc,aAAaH,CAAI,IAC7B,EAAE,GAAGD,GAAW,CAACC,CAAI,GAAGG,EAAI;AACrC,GAAG,CAAA,CAAE;AACL,SAASQ,EAA4BC,GAAQC,GAAO;AAClD,EAAID,KAAQE,EAAS,UAAU,MAAMF,EAAO,cAAcC,CAAK,CAAC;AAClE;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index56.js","sources":["../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs"],"sourcesContent":["// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["useCallbackRef","callback","callbackRef","React","args"],"mappings":";AAEA,SAASA,EAAeC,GAAU;AAChC,QAAMC,IAAcC,EAAM,OAAOF,CAAQ;AACzC,SAAAE,EAAM,UAAU,MAAM;AACpB,IAAAD,EAAY,UAAUD;AAAA,EACxB,CAAC,GACME,EAAM,QAAQ,MAAM,IAAIC,MAASF,EAAY,UAAU,GAAGE,CAAI,GAAG,EAAE;AAC5E;","x_google_ignoreList":[0]}
package/dist/index57.js CHANGED
@@ -1,52 +1,15 @@
1
- import * as f from "react";
2
- let s = 0;
3
- const r = /* @__PURE__ */ new WeakMap(), i = typeof queueMicrotask == "function" ? queueMicrotask : (e) => Promise.resolve().then(e);
4
- function o(e, t) {
5
- if (typeof e == "function") {
6
- if (t === null) {
7
- const n = ++s;
8
- r.set(e, n), i(() => {
9
- r.get(e) === n && (e(null), r.get(e) === n && r.delete(e));
10
- });
11
- return;
12
- }
13
- return r.delete(e), e(t);
14
- }
15
- e != null && (e.current = t);
16
- }
17
- function a(...e) {
18
- return (t) => {
19
- let n = !1;
20
- const c = e.map((l) => {
21
- const u = o(l, t);
22
- return !n && typeof u == "function" && (n = !0), u;
23
- });
24
- if (n)
25
- return () => {
26
- for (let l = 0; l < c.length; l += 1) {
27
- const u = c[l];
28
- typeof u == "function" ? u() : o(e[l], null);
29
- }
30
- };
31
- };
32
- }
33
- function d(e, t) {
34
- if (e.length !== t.length)
35
- return !1;
36
- for (let n = 0; n < e.length; n += 1)
37
- if (e[n] !== t[n])
38
- return !1;
39
- return !0;
40
- }
41
- function p(...e) {
42
- const t = f.useRef(null);
43
- return (t.current == null || !d(t.current.refs, e)) && (t.current = {
44
- callback: a(...e),
45
- refs: e
46
- }), t.current.callback;
1
+ import * as r from "react";
2
+ import { useCallbackRef as s } from "./index56.js";
3
+ function p(n, e = globalThis?.document) {
4
+ const t = s(n);
5
+ r.useEffect(() => {
6
+ const o = (a) => {
7
+ a.key === "Escape" && t(a);
8
+ };
9
+ return e.addEventListener("keydown", o, { capture: !0 }), () => e.removeEventListener("keydown", o, { capture: !0 });
10
+ }, [t, e]);
47
11
  }
48
12
  export {
49
- a as composeRefs,
50
- p as useComposedRefs
13
+ p as useEscapeKeydown
51
14
  };
52
15
  //# sourceMappingURL=index57.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index57.js","sources":["../src/lib/react-compose-refs.ts"],"sourcesContent":["import * as React from \"react\"\n\n\ntype PossibleCleanup = void | (() => void)\n\nlet nextDeferredNullId = 0\nconst deferredNullCalls = new WeakMap<React.RefCallback<unknown>, number>()\n\nconst scheduleMicrotask =\n typeof queueMicrotask === \"function\"\n ? queueMicrotask\n : (callback: () => void) => Promise.resolve().then(callback)\n\nfunction setRef<T>(ref: React.Ref<T> | undefined, value: T | null): PossibleCleanup {\n if (typeof ref === \"function\") {\n if (value === null) {\n const deferredNullId = ++nextDeferredNullId\n deferredNullCalls.set(ref, deferredNullId)\n\n scheduleMicrotask(() => {\n if (deferredNullCalls.get(ref) !== deferredNullId) {\n return\n }\n\n ref(null)\n if (deferredNullCalls.get(ref) === deferredNullId) {\n deferredNullCalls.delete(ref)\n }\n })\n\n return\n }\n\n deferredNullCalls.delete(ref)\n return ref(value)\n }\n\n if (ref != null) {\n ref.current = value\n }\n}\n\nfunction composeRefs<T>(...refs: Array<React.Ref<T> | undefined>) {\n return (node: T | null) => {\n let hasCleanup = false\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node)\n if (!hasCleanup && typeof cleanup === \"function\") {\n hasCleanup = true\n }\n return cleanup\n })\n\n if (hasCleanup) {\n return () => {\n for (let index = 0; index < cleanups.length; index += 1) {\n const cleanup = cleanups[index]\n\n if (typeof cleanup === \"function\") {\n cleanup()\n } else {\n setRef(refs[index], null)\n }\n }\n }\n }\n }\n}\n\nfunction haveSameRefs<T>(\n previousRefs: Array<React.Ref<T> | undefined>,\n nextRefs: Array<React.Ref<T> | undefined>,\n) {\n if (previousRefs.length !== nextRefs.length) {\n return false\n }\n\n for (let index = 0; index < previousRefs.length; index += 1) {\n if (previousRefs[index] !== nextRefs[index]) {\n return false\n }\n }\n\n return true\n}\n\nfunction useComposedRefs<T>(...refs: Array<React.Ref<T> | undefined>) {\n const composedRefsRef = React.useRef<{\n callback: ReturnType<typeof composeRefs<T>>\n refs: Array<React.Ref<T> | undefined>\n } | null>(null)\n\n if (\n composedRefsRef.current == null ||\n !haveSameRefs(composedRefsRef.current.refs, refs)\n ) {\n composedRefsRef.current = {\n callback: composeRefs(...refs),\n refs,\n }\n }\n\n return composedRefsRef.current.callback\n}\n\nexport {\n composeRefs,\n useComposedRefs,\n}\n"],"names":["nextDeferredNullId","deferredNullCalls","WeakMap","scheduleMicrotask","queueMicrotask","callback","Promise","resolve","then","setRef","ref","value","deferredNullId","set","get","delete","current","composeRefs","refs","node","hasCleanup","cleanups","map","cleanup","index","length","haveSameRefs","previousRefs","nextRefs","useComposedRefs","composedRefsRef","React","useRef"],"mappings":";AAKA,IAAIA,IAAqB;AACzB,MAAMC,wBAAwBC,QAAAA,GAExBC,IACJ,OAAOC,kBAAmB,aACtBA,iBACA,CAACC,MAAyBC,QAAQC,QAAAA,EAAUC,KAAKH,CAAQ;AAE/D,SAASI,EAAUC,GAA+BC,GAAkC;AAClF,MAAI,OAAOD,KAAQ,YAAY;AAC7B,QAAIC,MAAU,MAAM;AAClB,YAAMC,IAAiB,EAAEZ;AACzBC,MAAAA,EAAkBY,IAAIH,GAAKE,CAAc,GAEzCT,EAAkB,MAAM;AACtB,QAAIF,EAAkBa,IAAIJ,CAAG,MAAME,MAInCF,EAAI,IAAI,GACJT,EAAkBa,IAAIJ,CAAG,MAAME,KACjCX,EAAkBc,OAAOL,CAAG;AAAA,MAEhC,CAAC;AAED;AAAA,IACF;AAEAT,WAAAA,EAAkBc,OAAOL,CAAG,GACrBA,EAAIC,CAAK;AAAA,EAClB;AAEA,EAAID,KAAO,SACTA,EAAIM,UAAUL;AAElB;AAEA,SAASM,KAAkBC,GAAuC;AAChE,SAAO,CAACC,MAAmB;AACzB,QAAIC,IAAa;AACjB,UAAMC,IAAWH,EAAKI,IAAKZ,CAAAA,MAAQ;AACjC,YAAMa,IAAUd,EAAOC,GAAKS,CAAI;AAChC,aAAI,CAACC,KAAc,OAAOG,KAAY,eACpCH,IAAa,KAERG;AAAAA,IACT,CAAC;AAED,QAAIH;AACF,aAAO,MAAM;AACX,iBAASI,IAAQ,GAAGA,IAAQH,EAASI,QAAQD,KAAS,GAAG;AACvD,gBAAMD,IAAUF,EAASG,CAAK;AAE9B,UAAI,OAAOD,KAAY,aACrBA,EAAAA,IAEAd,EAAOS,EAAKM,CAAK,GAAG,IAAI;AAAA,QAE5B;AAAA,MACF;AAAA,EAEJ;AACF;AAEA,SAASE,EACPC,GACAC,GACA;AACA,MAAID,EAAaF,WAAWG,EAASH;AACnC,WAAO;AAGT,WAASD,IAAQ,GAAGA,IAAQG,EAAaF,QAAQD,KAAS;AACxD,QAAIG,EAAaH,CAAK,MAAMI,EAASJ,CAAK;AACxC,aAAO;AAIX,SAAO;AACT;AAEA,SAASK,KAAsBX,GAAuC;AACpE,QAAMY,IAAkBC,EAAMC,OAGpB,IAAI;AAEd,UACEF,EAAgBd,WAAW,QAC3B,CAACU,EAAaI,EAAgBd,QAAQE,MAAMA,CAAI,OAEhDY,EAAgBd,UAAU;AAAA,IACxBX,UAAUY,EAAY,GAAGC,CAAI;AAAA,IAC7BA,MAAAA;AAAAA,EAAAA,IAIGY,EAAgBd,QAAQX;AACjC;"}
1
+ {"version":3,"file":"index57.js","sources":["../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs"],"sourcesContent":["// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["useEscapeKeydown","onEscapeKeyDownProp","ownerDocument","onEscapeKeyDown","useCallbackRef","React","handleKeyDown","event"],"mappings":";;AAGA,SAASA,EAAiBC,GAAqBC,IAAgB,YAAY,UAAU;AACnF,QAAMC,IAAkBC,EAAeH,CAAmB;AAC1D,EAAAI,EAAM,UAAU,MAAM;AACpB,UAAMC,IAAgB,CAACC,MAAU;AAC/B,MAAIA,EAAM,QAAQ,YAChBJ,EAAgBI,CAAK;AAAA,IAEzB;AACA,WAAAL,EAAc,iBAAiB,WAAWI,GAAe,EAAE,SAAS,IAAM,GACnE,MAAMJ,EAAc,oBAAoB,WAAWI,GAAe,EAAE,SAAS,IAAM;AAAA,EAC5F,GAAG,CAACH,GAAiBD,CAAa,CAAC;AACrC;","x_google_ignoreList":[0]}