@rpcbase/ui 0.233.0 → 0.235.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 (267) hide show
  1. package/dist/components/FilesUploadField/index.d.ts.map +1 -1
  2. package/dist/index151.js +4 -4
  3. package/dist/index156.js +1 -1
  4. package/dist/index157.js +1 -1
  5. package/dist/index164.js +1 -1
  6. package/dist/index165.js +6 -6
  7. package/dist/index167.js +4 -4
  8. package/dist/index169.js +1 -1
  9. package/dist/index172.js +9 -9
  10. package/dist/index175.js +1 -1
  11. package/dist/index176.js +4 -4
  12. package/dist/index178.js +1 -1
  13. package/dist/index182.js +1 -1
  14. package/dist/index184.js +12 -12
  15. package/dist/index185.js +1 -1
  16. package/dist/index187.js +6 -6
  17. package/dist/index189.js +6 -6
  18. package/dist/index190.js +5 -5
  19. package/dist/index193.js +3 -3
  20. package/dist/index194.js +5 -5
  21. package/dist/index198.js +57 -36
  22. package/dist/index198.js.map +1 -1
  23. package/dist/index199.js.map +1 -1
  24. package/dist/index256.js +20 -14
  25. package/dist/index256.js.map +1 -1
  26. package/dist/index257.js +58 -146
  27. package/dist/index257.js.map +1 -1
  28. package/dist/index258.js +6 -30
  29. package/dist/index258.js.map +1 -1
  30. package/dist/index259.js +11 -9
  31. package/dist/index259.js.map +1 -1
  32. package/dist/index260.js +46 -44
  33. package/dist/index260.js.map +1 -1
  34. package/dist/index261.js +4 -12
  35. package/dist/index261.js.map +1 -1
  36. package/dist/index262.js +28 -43
  37. package/dist/index262.js.map +1 -1
  38. package/dist/index263.js +14 -93
  39. package/dist/index263.js.map +1 -1
  40. package/dist/index264.js +5 -86
  41. package/dist/index264.js.map +1 -1
  42. package/dist/index265.js +21 -105
  43. package/dist/index265.js.map +1 -1
  44. package/dist/index266.js +50 -51
  45. package/dist/index266.js.map +1 -1
  46. package/dist/index267.js +25 -11
  47. package/dist/index267.js.map +1 -1
  48. package/dist/index268.js +41 -37
  49. package/dist/index268.js.map +1 -1
  50. package/dist/index269.js +39 -8
  51. package/dist/index269.js.map +1 -1
  52. package/dist/index270.js +45 -117
  53. package/dist/index270.js.map +1 -1
  54. package/dist/index271.js +20 -17
  55. package/dist/index271.js.map +1 -1
  56. package/dist/index272.js +69 -14
  57. package/dist/index272.js.map +1 -1
  58. package/dist/index273.js +17 -3
  59. package/dist/index273.js.map +1 -1
  60. package/dist/index274.js +11 -36
  61. package/dist/index274.js.map +1 -1
  62. package/dist/index275.js +27 -20
  63. package/dist/index275.js.map +1 -1
  64. package/dist/index276.js +13 -9
  65. package/dist/index276.js.map +1 -1
  66. package/dist/index277.js +18 -8
  67. package/dist/index277.js.map +1 -1
  68. package/dist/index278.js +37 -20
  69. package/dist/index278.js.map +1 -1
  70. package/dist/index279.js +255 -59
  71. package/dist/index279.js.map +1 -1
  72. package/dist/index280.js +278 -6
  73. package/dist/index280.js.map +1 -1
  74. package/dist/index281.js +67 -10
  75. package/dist/index281.js.map +1 -1
  76. package/dist/index282.js +96 -47
  77. package/dist/index282.js.map +1 -1
  78. package/dist/index283.js +84 -4
  79. package/dist/index283.js.map +1 -1
  80. package/dist/index284.js +3 -29
  81. package/dist/index284.js.map +1 -1
  82. package/dist/index285.js +28 -15
  83. package/dist/index285.js.map +1 -1
  84. package/dist/index286.js +16 -5
  85. package/dist/index286.js.map +1 -1
  86. package/dist/index287.js +35 -22
  87. package/dist/index287.js.map +1 -1
  88. package/dist/index288.js +16 -51
  89. package/dist/index288.js.map +1 -1
  90. package/dist/index289.js +3 -25
  91. package/dist/index289.js.map +1 -1
  92. package/dist/index290.js +26 -41
  93. package/dist/index290.js.map +1 -1
  94. package/dist/index291.js +27 -38
  95. package/dist/index291.js.map +1 -1
  96. package/dist/index292.js +4 -45
  97. package/dist/index292.js.map +1 -1
  98. package/dist/index293.js +78 -20
  99. package/dist/index293.js.map +1 -1
  100. package/dist/index294.js +264 -65
  101. package/dist/index294.js.map +1 -1
  102. package/dist/index295.js +11 -17
  103. package/dist/index295.js.map +1 -1
  104. package/dist/index296.js +10 -11
  105. package/dist/index296.js.map +1 -1
  106. package/dist/index297.js +24 -26
  107. package/dist/index297.js.map +1 -1
  108. package/dist/index298.js +16 -13
  109. package/dist/index298.js.map +1 -1
  110. package/dist/index299.js +122 -15
  111. package/dist/index299.js.map +1 -1
  112. package/dist/index300.js +5 -36
  113. package/dist/index300.js.map +1 -1
  114. package/dist/index301.js +38 -260
  115. package/dist/index301.js.map +1 -1
  116. package/dist/index302.js +62 -275
  117. package/dist/index302.js.map +1 -1
  118. package/dist/index303.js +13 -68
  119. package/dist/index303.js.map +1 -1
  120. package/dist/index304.js +7 -99
  121. package/dist/index304.js.map +1 -1
  122. package/dist/index305.js +5 -83
  123. package/dist/index305.js.map +1 -1
  124. package/dist/index306.js +3 -3
  125. package/dist/index306.js.map +1 -1
  126. package/dist/index307.js +10 -29
  127. package/dist/index307.js.map +1 -1
  128. package/dist/index308.js +6 -15
  129. package/dist/index308.js.map +1 -1
  130. package/dist/index309.js +133 -34
  131. package/dist/index309.js.map +1 -1
  132. package/dist/index310.js +398 -15
  133. package/dist/index310.js.map +1 -1
  134. package/dist/index311.js +52 -3
  135. package/dist/index311.js.map +1 -1
  136. package/dist/index312.js +11 -26
  137. package/dist/index312.js.map +1 -1
  138. package/dist/index313.js +10 -27
  139. package/dist/index313.js.map +1 -1
  140. package/dist/index314.js +14 -4
  141. package/dist/index314.js.map +1 -1
  142. package/dist/index315.js +151 -75
  143. package/dist/index315.js.map +1 -1
  144. package/dist/index316.js +28 -267
  145. package/dist/index316.js.map +1 -1
  146. package/dist/index317.js +9 -11
  147. package/dist/index317.js.map +1 -1
  148. package/dist/index318.js +49 -11
  149. package/dist/index318.js.map +1 -1
  150. package/dist/index319.js +11 -25
  151. package/dist/index319.js.map +1 -1
  152. package/dist/index320.js +43 -15
  153. package/dist/index320.js.map +1 -1
  154. package/dist/index321.js +89 -119
  155. package/dist/index321.js.map +1 -1
  156. package/dist/index322.js +86 -5
  157. package/dist/index322.js.map +1 -1
  158. package/dist/index323.js +104 -39
  159. package/dist/index323.js.map +1 -1
  160. package/dist/index324.js +47 -60
  161. package/dist/index324.js.map +1 -1
  162. package/dist/index325.js +11 -13
  163. package/dist/index325.js.map +1 -1
  164. package/dist/index326.js +37 -7
  165. package/dist/index326.js.map +1 -1
  166. package/dist/index327.js +8 -5
  167. package/dist/index327.js.map +1 -1
  168. package/dist/index328.js +116 -3
  169. package/dist/index328.js.map +1 -1
  170. package/dist/index329.js +17 -10
  171. package/dist/index329.js.map +1 -1
  172. package/dist/index330.js +15 -7
  173. package/dist/index330.js.map +1 -1
  174. package/dist/index331.js +3 -133
  175. package/dist/index331.js.map +1 -1
  176. package/dist/index332.js +35 -398
  177. package/dist/index332.js.map +1 -1
  178. package/dist/index333.js +20 -52
  179. package/dist/index333.js.map +1 -1
  180. package/dist/index334.js +9 -11
  181. package/dist/index334.js.map +1 -1
  182. package/dist/index335.js +8 -11
  183. package/dist/index335.js.map +1 -1
  184. package/dist/index336.js +8 -19
  185. package/dist/index336.js.map +1 -1
  186. package/dist/index337.js +11 -28
  187. package/dist/index337.js.map +1 -1
  188. package/dist/index338.js +7 -15
  189. package/dist/index338.js.map +1 -1
  190. package/dist/index339.js +13 -8
  191. package/dist/index339.js.map +1 -1
  192. package/dist/index340.js +3 -11
  193. package/dist/index340.js.map +1 -1
  194. package/dist/index341.js +3 -8
  195. package/dist/index341.js.map +1 -1
  196. package/dist/index342.js +16 -12
  197. package/dist/index342.js.map +1 -1
  198. package/dist/index343.js +19 -3
  199. package/dist/index343.js.map +1 -1
  200. package/dist/index344.js +28 -3
  201. package/dist/index344.js.map +1 -1
  202. package/dist/index345.js +15 -16
  203. package/dist/index345.js.map +1 -1
  204. package/dist/index346.js +2 -2
  205. package/dist/index347.js +122 -5
  206. package/dist/index347.js.map +1 -1
  207. package/dist/index348.js +31 -121
  208. package/dist/index348.js.map +1 -1
  209. package/dist/index349.js +72 -31
  210. package/dist/index349.js.map +1 -1
  211. package/dist/index350.js +139 -70
  212. package/dist/index350.js.map +1 -1
  213. package/dist/index351.js +35 -116
  214. package/dist/index351.js.map +1 -1
  215. package/dist/index352.js +44 -56
  216. package/dist/index352.js.map +1 -1
  217. package/dist/index353.js +14 -49
  218. package/dist/index353.js.map +1 -1
  219. package/dist/index354.js +6 -15
  220. package/dist/index354.js.map +1 -1
  221. package/dist/index362.js +10 -19
  222. package/dist/index362.js.map +1 -1
  223. package/dist/index363.js +17 -4
  224. package/dist/index363.js.map +1 -1
  225. package/dist/index364.js +5 -11
  226. package/dist/index364.js.map +1 -1
  227. package/dist/index365.js +4 -17
  228. package/dist/index365.js.map +1 -1
  229. package/dist/index366.js +20 -5
  230. package/dist/index366.js.map +1 -1
  231. package/dist/index367.js +43 -19
  232. package/dist/index367.js.map +1 -1
  233. package/dist/index368.js +13 -40
  234. package/dist/index368.js.map +1 -1
  235. package/dist/index369.js +4 -17
  236. package/dist/index369.js.map +1 -1
  237. package/dist/index370.js +200 -4
  238. package/dist/index370.js.map +1 -1
  239. package/dist/index371.js +74 -197
  240. package/dist/index371.js.map +1 -1
  241. package/dist/index372.js +20 -77
  242. package/dist/index372.js.map +1 -1
  243. package/dist/index374.js +3 -3
  244. package/dist/index375.js +1 -1
  245. package/dist/index376.js +3 -3
  246. package/dist/index378.js +2 -2
  247. package/dist/index380.js +1 -1
  248. package/dist/index381.js +2 -2
  249. package/dist/index384.js +2 -2
  250. package/dist/index386.js +1 -1
  251. package/dist/index407.js +1 -1
  252. package/dist/index49.js +28 -28
  253. package/dist/index50.js +21 -21
  254. package/dist/index51.js +1 -1
  255. package/dist/index52.js +8 -8
  256. package/dist/index53.js +2 -2
  257. package/dist/index55.js +17 -17
  258. package/dist/index56.js +4 -4
  259. package/dist/index57.js +3 -3
  260. package/dist/index58.js +7 -7
  261. package/dist/index59.js +4 -4
  262. package/dist/index60.js +12 -12
  263. package/dist/index61.js +2 -2
  264. package/dist/index62.js +2 -2
  265. package/dist/index8.js +533 -698
  266. package/dist/index8.js.map +1 -1
  267. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index290.js","sources":["../../../node_modules/@base-ui/react/esm/internals/labelable-provider/useLabelableId.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { isElement } from '@floating-ui/utils/dom';\nimport { NOOP } from \"../noop.js\";\nimport { useBaseUiId } from \"../useBaseUiId.js\";\nimport { useLabelableContext } from \"./LabelableContext.js\";\nexport function useLabelableId(params = {}) {\n const {\n id,\n implicit = false,\n controlRef\n } = params;\n const {\n controlId,\n registerControlId\n } = useLabelableContext();\n const defaultId = useBaseUiId(id);\n const controlIdForEffect = implicit ? controlId : undefined;\n const controlSourceRef = useRefWithInit(() => Symbol('labelable-control'));\n const hasRegisteredRef = React.useRef(false);\n const hadExplicitIdRef = React.useRef(id != null);\n const unregisterControlId = useStableCallback(() => {\n if (!hasRegisteredRef.current || registerControlId === NOOP) {\n return;\n }\n hasRegisteredRef.current = false;\n registerControlId(controlSourceRef.current, undefined);\n });\n useIsoLayoutEffect(() => {\n if (registerControlId === NOOP) {\n return undefined;\n }\n let nextId;\n if (implicit) {\n const elem = controlRef?.current;\n if (isElement(elem) && elem.closest('label') != null) {\n nextId = id ?? null;\n } else {\n nextId = controlIdForEffect ?? defaultId;\n }\n } else if (id != null) {\n hadExplicitIdRef.current = true;\n nextId = id;\n } else if (hadExplicitIdRef.current) {\n nextId = defaultId;\n } else {\n unregisterControlId();\n return undefined;\n }\n if (nextId === undefined) {\n unregisterControlId();\n return undefined;\n }\n hasRegisteredRef.current = true;\n registerControlId(controlSourceRef.current, nextId);\n return undefined;\n }, [id, controlRef, controlIdForEffect, registerControlId, implicit, defaultId, controlSourceRef, unregisterControlId]);\n React.useEffect(() => {\n return unregisterControlId;\n }, [unregisterControlId]);\n return controlId ?? defaultId;\n}"],"names":["useLabelableId","params","id","implicit","controlRef","controlId","registerControlId","useLabelableContext","defaultId","useBaseUiId","controlIdForEffect","controlSourceRef","useRefWithInit","hasRegisteredRef","React","hadExplicitIdRef","unregisterControlId","useStableCallback","NOOP","useIsoLayoutEffect","nextId","elem","isElement"],"mappings":";;;;;;;;AAUO,SAASA,EAAeC,IAAS,IAAI;AAC1C,QAAM;AAAA,IACJ,IAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,YAAAC;AAAA,EACJ,IAAMH,GACE;AAAA,IACJ,WAAAI;AAAA,IACA,mBAAAC;AAAA,EACJ,IAAMC,EAAmB,GACjBC,IAAYC,EAAYP,CAAE,GAC1BQ,IAAqBP,IAAWE,IAAY,QAC5CM,IAAmBC,EAAe,MAAM,uBAAO,mBAAmB,CAAC,GACnEC,IAAmBC,EAAM,OAAO,EAAK,GACrCC,IAAmBD,EAAM,OAAOZ,KAAM,IAAI,GAC1Cc,IAAsBC,EAAkB,MAAM;AAClD,IAAI,CAACJ,EAAiB,WAAWP,MAAsBY,MAGvDL,EAAiB,UAAU,IAC3BP,EAAkBK,EAAiB,SAAS,MAAS;AAAA,EACvD,CAAC;AACD,SAAAQ,EAAmB,MAAM;AACvB,QAAIb,MAAsBY;AACxB;AAEF,QAAIE;AACJ,QAAIjB,GAAU;AACZ,YAAMkB,IAAOjB,GAAY;AACzB,MAAIkB,EAAUD,CAAI,KAAKA,EAAK,QAAQ,OAAO,KAAK,OAC9CD,IAASlB,KAAM,OAEfkB,IAASV,KAAsBF;AAAA,IAEnC,WAAWN,KAAM;AACf,MAAAa,EAAiB,UAAU,IAC3BK,IAASlB;AAAA,aACAa,EAAiB;AAC1B,MAAAK,IAASZ;AAAA,SACJ;AACL,MAAAQ,EAAmB;AACnB;AAAA,IACF;AACA,QAAII,MAAW,QAAW;AACxB,MAAAJ,EAAmB;AACnB;AAAA,IACF;AACA,IAAAH,EAAiB,UAAU,IAC3BP,EAAkBK,EAAiB,SAASS,CAAM;AAAA,EAEpD,GAAG,CAAClB,GAAIE,GAAYM,GAAoBJ,GAAmBH,GAAUK,GAAWG,GAAkBK,CAAmB,CAAC,GACtHF,EAAM,UAAU,MACPE,GACN,CAACA,CAAmB,CAAC,GACjBX,KAAaG;AACtB;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index290.js","sources":["../../../node_modules/@base-ui/react/esm/floating-ui-react/utils/element.js"],"sourcesContent":["import { isElement, isHTMLElement } from '@floating-ui/utils/dom';\nimport { isJSDOM } from '@base-ui/utils/detectBrowser';\nimport { FOCUSABLE_ATTRIBUTE, TYPEABLE_SELECTOR } from \"./constants.js\";\nimport { activeElement, contains, getTarget } from \"../../internals/shadowDom.js\";\nexport { activeElement, contains, getTarget };\nexport function isTargetInsideEnabledTrigger(target, triggerElements) {\n if (!isElement(target)) {\n return false;\n }\n const targetElement = target;\n if (triggerElements.hasElement(targetElement)) {\n return !targetElement.hasAttribute('data-trigger-disabled');\n }\n for (const [, trigger] of triggerElements.entries()) {\n if (contains(trigger, targetElement)) {\n return !trigger.hasAttribute('data-trigger-disabled');\n }\n }\n return false;\n}\nexport function isEventTargetWithin(event, node) {\n if (node == null) {\n return false;\n }\n if ('composedPath' in event) {\n return event.composedPath().includes(node);\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n const eventAgain = event;\n return eventAgain.target != null && node.contains(eventAgain.target);\n}\nexport function isRootElement(element) {\n return element.matches('html,body');\n}\nexport function isTypeableElement(element) {\n return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\nexport function isInteractiveElement(element) {\n return element?.closest(`button,a[href],[role=\"button\"],select,[tabindex]:not([tabindex=\"-1\"]),${TYPEABLE_SELECTOR}`) != null;\n}\nexport function isTypeableCombobox(element) {\n if (!element) {\n return false;\n }\n return element.getAttribute('role') === 'combobox' && isTypeableElement(element);\n}\nexport function matchesFocusVisible(element) {\n // We don't want to block focus from working with `visibleOnly`\n // (JSDOM doesn't match `:focus-visible` when the element has `:focus`)\n if (!element || isJSDOM) {\n return true;\n }\n try {\n return element.matches(':focus-visible');\n } catch (_e) {\n return true;\n }\n}\nexport function getFloatingFocusElement(floatingElement) {\n if (!floatingElement) {\n return null;\n }\n // Try to find the element that has `{...getFloatingProps()}` spread on it.\n // This indicates the floating element is acting as a positioning wrapper, and\n // so focus should be managed on the child element with the event handlers and\n // aria props.\n return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(`[${FOCUSABLE_ATTRIBUTE}]`) || floatingElement;\n}"],"names":["isEventTargetWithin","event","node","eventAgain","isRootElement","element","isTypeableElement","isHTMLElement","TYPEABLE_SELECTOR","isTypeableCombobox","getFloatingFocusElement","floatingElement","FOCUSABLE_ATTRIBUTE"],"mappings":";;AAoBO,SAASA,EAAoBC,GAAOC,GAAM;AAC/C,MAAIA,KAAQ;AACV,WAAO;AAET,MAAI,kBAAkBD;AACpB,WAAOA,EAAM,eAAe,SAASC,CAAI;AAI3C,QAAMC,IAAaF;AACnB,SAAOE,EAAW,UAAU,QAAQD,EAAK,SAASC,EAAW,MAAM;AACrE;AACO,SAASC,EAAcC,GAAS;AACrC,SAAOA,EAAQ,QAAQ,WAAW;AACpC;AACO,SAASC,EAAkBD,GAAS;AACzC,SAAOE,EAAcF,CAAO,KAAKA,EAAQ,QAAQG,CAAiB;AACpE;AAIO,SAASC,EAAmBJ,GAAS;AAC1C,SAAKA,IAGEA,EAAQ,aAAa,MAAM,MAAM,cAAcC,EAAkBD,CAAO,IAFtE;AAGX;AAaO,SAASK,EAAwBC,GAAiB;AACvD,SAAKA,IAOEA,EAAgB,aAAaC,CAAmB,IAAID,IAAkBA,EAAgB,cAAc,IAAIC,CAAmB,GAAG,KAAKD,IANjI;AAOX;","x_google_ignoreList":[0]}
package/dist/index291.js CHANGED
@@ -1,43 +1,32 @@
1
- import * as a from "react";
2
- import { useIsoLayoutEffect as c } from "./index283.js";
3
- import { AnimationFrame as u } from "./index324.js";
4
- function g(t, s = !1, f = !1) {
5
- const [n, r] = a.useState(t && s ? "idle" : void 0), [i, d] = a.useState(t);
6
- return t && !i && (d(!0), r("starting")), !t && i && n !== "ending" && !f && r("ending"), !t && !i && n === "ending" && r(void 0), c(() => {
7
- if (!t && i && n !== "ending" && f) {
8
- const e = u.request(() => {
9
- r("ending");
10
- });
11
- return () => {
12
- u.cancel(e);
13
- };
1
+ import { isShadowRoot as r } from "./index309.js";
2
+ function a(t) {
3
+ let e = t.activeElement;
4
+ for (; e?.shadowRoot?.activeElement != null; )
5
+ e = e.shadowRoot.activeElement;
6
+ return e;
7
+ }
8
+ function u(t, e) {
9
+ if (!t || !e)
10
+ return !1;
11
+ const n = e.getRootNode?.();
12
+ if (t.contains(e))
13
+ return !0;
14
+ if (n && r(n)) {
15
+ let o = e;
16
+ for (; o; ) {
17
+ if (t === o)
18
+ return !0;
19
+ o = o.parentNode || o.host;
14
20
  }
15
- }, [t, i, n, f]), c(() => {
16
- if (!t || s)
17
- return;
18
- const e = u.request(() => {
19
- r(void 0);
20
- });
21
- return () => {
22
- u.cancel(e);
23
- };
24
- }, [s, t]), c(() => {
25
- if (!t || !s)
26
- return;
27
- t && i && n !== "idle" && r("starting");
28
- const e = u.request(() => {
29
- r("idle");
30
- });
31
- return () => {
32
- u.cancel(e);
33
- };
34
- }, [s, t, i, n]), {
35
- mounted: i,
36
- setMounted: d,
37
- transitionStatus: n
38
- };
21
+ }
22
+ return !1;
23
+ }
24
+ function f(t) {
25
+ return "composedPath" in t ? t.composedPath()[0] : t.target;
39
26
  }
40
27
  export {
41
- g as useTransitionStatus
28
+ a as activeElement,
29
+ u as contains,
30
+ f as getTarget
42
31
  };
43
32
  //# sourceMappingURL=index291.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index291.js","sources":["../../../node_modules/@base-ui/react/esm/internals/useTransitionStatus.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { AnimationFrame } from '@base-ui/utils/useAnimationFrame';\n/**\n * Provides a status string for CSS animations.\n * @param open - a boolean that determines if the element is open.\n * @param enableIdleState - a boolean that enables the `'idle'` state between `'starting'` and `'ending'`\n */\nexport function useTransitionStatus(open, enableIdleState = false, deferEndingState = false) {\n const [transitionStatus, setTransitionStatus] = React.useState(open && enableIdleState ? 'idle' : undefined);\n const [mounted, setMounted] = React.useState(open);\n if (open && !mounted) {\n setMounted(true);\n setTransitionStatus('starting');\n }\n if (!open && mounted && transitionStatus !== 'ending' && !deferEndingState) {\n setTransitionStatus('ending');\n }\n if (!open && !mounted && transitionStatus === 'ending') {\n setTransitionStatus(undefined);\n }\n useIsoLayoutEffect(() => {\n if (!open && mounted && transitionStatus !== 'ending' && deferEndingState) {\n const frame = AnimationFrame.request(() => {\n setTransitionStatus('ending');\n });\n return () => {\n AnimationFrame.cancel(frame);\n };\n }\n return undefined;\n }, [open, mounted, transitionStatus, deferEndingState]);\n useIsoLayoutEffect(() => {\n if (!open || enableIdleState) {\n return undefined;\n }\n const frame = AnimationFrame.request(() => {\n // Avoid `flushSync` here due to Firefox.\n // See https://github.com/mui/base-ui/pull/3424\n setTransitionStatus(undefined);\n });\n return () => {\n AnimationFrame.cancel(frame);\n };\n }, [enableIdleState, open]);\n useIsoLayoutEffect(() => {\n if (!open || !enableIdleState) {\n return undefined;\n }\n if (open && mounted && transitionStatus !== 'idle') {\n setTransitionStatus('starting');\n }\n const frame = AnimationFrame.request(() => {\n setTransitionStatus('idle');\n });\n return () => {\n AnimationFrame.cancel(frame);\n };\n }, [enableIdleState, open, mounted, transitionStatus]);\n return {\n mounted,\n setMounted,\n transitionStatus\n };\n}"],"names":["useTransitionStatus","open","enableIdleState","deferEndingState","transitionStatus","setTransitionStatus","React","mounted","setMounted","useIsoLayoutEffect","frame","AnimationFrame"],"mappings":";;;AAUO,SAASA,EAAoBC,GAAMC,IAAkB,IAAOC,IAAmB,IAAO;AAC3F,QAAM,CAACC,GAAkBC,CAAmB,IAAIC,EAAM,SAASL,KAAQC,IAAkB,SAAS,MAAS,GACrG,CAACK,GAASC,CAAU,IAAIF,EAAM,SAASL,CAAI;AACjD,SAAIA,KAAQ,CAACM,MACXC,EAAW,EAAI,GACfH,EAAoB,UAAU,IAE5B,CAACJ,KAAQM,KAAWH,MAAqB,YAAY,CAACD,KACxDE,EAAoB,QAAQ,GAE1B,CAACJ,KAAQ,CAACM,KAAWH,MAAqB,YAC5CC,EAAoB,MAAS,GAE/BI,EAAmB,MAAM;AACvB,QAAI,CAACR,KAAQM,KAAWH,MAAqB,YAAYD,GAAkB;AACzE,YAAMO,IAAQC,EAAe,QAAQ,MAAM;AACzC,QAAAN,EAAoB,QAAQ;AAAA,MAC9B,CAAC;AACD,aAAO,MAAM;AACX,QAAAM,EAAe,OAAOD,CAAK;AAAA,MAC7B;AAAA,IACF;AAAA,EAEF,GAAG,CAACT,GAAMM,GAASH,GAAkBD,CAAgB,CAAC,GACtDM,EAAmB,MAAM;AACvB,QAAI,CAACR,KAAQC;AACX;AAEF,UAAMQ,IAAQC,EAAe,QAAQ,MAAM;AAGzC,MAAAN,EAAoB,MAAS;AAAA,IAC/B,CAAC;AACD,WAAO,MAAM;AACX,MAAAM,EAAe,OAAOD,CAAK;AAAA,IAC7B;AAAA,EACF,GAAG,CAACR,GAAiBD,CAAI,CAAC,GAC1BQ,EAAmB,MAAM;AACvB,QAAI,CAACR,KAAQ,CAACC;AACZ;AAEF,IAAID,KAAQM,KAAWH,MAAqB,UAC1CC,EAAoB,UAAU;AAEhC,UAAMK,IAAQC,EAAe,QAAQ,MAAM;AACzC,MAAAN,EAAoB,MAAM;AAAA,IAC5B,CAAC;AACD,WAAO,MAAM;AACX,MAAAM,EAAe,OAAOD,CAAK;AAAA,IAC7B;AAAA,EACF,GAAG,CAACR,GAAiBD,GAAMM,GAASH,CAAgB,CAAC,GAC9C;AAAA,IACL,SAAAG;AAAA,IACA,YAAAC;AAAA,IACA,kBAAAJ;AAAA,EACJ;AACA;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index291.js","sources":["../../../node_modules/@base-ui/react/esm/internals/shadowDom.js"],"sourcesContent":["import { isShadowRoot } from '@floating-ui/utils/dom';\nexport function activeElement(doc) {\n let element = doc.activeElement;\n while (element?.shadowRoot?.activeElement != null) {\n element = element.shadowRoot.activeElement;\n }\n return element;\n}\nexport function contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode?.();\n\n // First, attempt with the faster native method.\n if (parent.contains(child)) {\n return true;\n }\n\n // Then fall back to traversing out of shadow roots when needed.\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n next = next.parentNode || next.host;\n }\n }\n return false;\n}\nexport function getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS assumes `composedPath()` always exists, but older browsers without\n // shadow DOM support still fall back to `target`.\n return event.target;\n}"],"names":["activeElement","doc","element","contains","parent","child","rootNode","isShadowRoot","next","getTarget","event"],"mappings":";AACO,SAASA,EAAcC,GAAK;AACjC,MAAIC,IAAUD,EAAI;AAClB,SAAOC,GAAS,YAAY,iBAAiB;AAC3C,IAAAA,IAAUA,EAAQ,WAAW;AAE/B,SAAOA;AACT;AACO,SAASC,EAASC,GAAQC,GAAO;AACtC,MAAI,CAACD,KAAU,CAACC;AACd,WAAO;AAET,QAAMC,IAAWD,EAAM,cAAW;AAGlC,MAAID,EAAO,SAASC,CAAK;AACvB,WAAO;AAIT,MAAIC,KAAYC,EAAaD,CAAQ,GAAG;AACtC,QAAIE,IAAOH;AACX,WAAOG,KAAM;AACX,UAAIJ,MAAWI;AACb,eAAO;AAET,MAAAA,IAAOA,EAAK,cAAcA,EAAK;AAAA,IACjC;AAAA,EACF;AACA,SAAO;AACT;AACO,SAASC,EAAUC,GAAO;AAC/B,SAAI,kBAAkBA,IACbA,EAAM,aAAY,EAAG,CAAC,IAKxBA,EAAM;AACf;","x_google_ignoreList":[0]}
package/dist/index292.js CHANGED
@@ -1,48 +1,7 @@
1
- import { compareItemEquality as s } from "./index295.js";
2
- import { hasNullItemLabel as u, stringifyAsValue as a } from "./index294.js";
3
- import { createSelector as r } from "./index354.js";
4
- const d = {
5
- id: r((e) => e.id),
6
- labelId: r((e) => e.labelId),
7
- modal: r((e) => e.modal),
8
- multiple: r((e) => e.multiple),
9
- items: r((e) => e.items),
10
- itemToStringLabel: r((e) => e.itemToStringLabel),
11
- itemToStringValue: r((e) => e.itemToStringValue),
12
- isItemEqualToValue: r((e) => e.isItemEqualToValue),
13
- value: r((e) => e.value),
14
- hasSelectedValue: r((e) => {
15
- const {
16
- value: l,
17
- multiple: t,
18
- itemToStringValue: o
19
- } = e;
20
- return l == null ? !1 : t && Array.isArray(l) ? l.length > 0 : a(l, o) !== "";
21
- }),
22
- hasNullItemLabel: r((e, l) => l ? u(e.items) : !1),
23
- open: r((e) => e.open),
24
- mounted: r((e) => e.mounted),
25
- forceMount: r((e) => e.forceMount),
26
- transitionStatus: r((e) => e.transitionStatus),
27
- openMethod: r((e) => e.openMethod),
28
- activeIndex: r((e) => e.activeIndex),
29
- selectedIndex: r((e) => e.selectedIndex),
30
- isActive: r((e, l) => e.activeIndex === l),
31
- isSelected: r((e, l, t) => {
32
- const o = e.isItemEqualToValue, i = e.value;
33
- return e.multiple ? Array.isArray(i) && i.some((n) => s(t, n, o)) : e.selectedIndex === l && e.selectedIndex !== null ? !0 : s(t, i, o);
34
- }),
35
- isSelectedByFocus: r((e, l) => e.selectedIndex === l),
36
- popupProps: r((e) => e.popupProps),
37
- triggerProps: r((e) => e.triggerProps),
38
- triggerElement: r((e) => e.triggerElement),
39
- positionerElement: r((e) => e.positionerElement),
40
- listElement: r((e) => e.listElement),
41
- scrollUpArrowVisible: r((e) => e.scrollUpArrowVisible),
42
- scrollDownArrowVisible: r((e) => e.scrollDownArrowVisible),
43
- hasScrollArrows: r((e) => e.hasScrollArrows)
44
- };
1
+ import * as e from "react";
2
+ const t = /* @__PURE__ */ e.createContext(void 0);
3
+ process.env.NODE_ENV !== "production" && (t.displayName = "SelectPortalContext");
45
4
  export {
46
- d as selectors
5
+ t as SelectPortalContext
47
6
  };
48
7
  //# sourceMappingURL=index292.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index292.js","sources":["../../../node_modules/@base-ui/react/esm/select/store.js"],"sourcesContent":["import { createSelector } from '@base-ui/utils/store';\nimport { compareItemEquality } from \"../internals/itemEquality.js\";\nimport { hasNullItemLabel, stringifyAsValue } from \"../internals/resolveValueLabel.js\";\nexport const selectors = {\n id: createSelector(state => state.id),\n labelId: createSelector(state => state.labelId),\n modal: createSelector(state => state.modal),\n multiple: createSelector(state => state.multiple),\n items: createSelector(state => state.items),\n itemToStringLabel: createSelector(state => state.itemToStringLabel),\n itemToStringValue: createSelector(state => state.itemToStringValue),\n isItemEqualToValue: createSelector(state => state.isItemEqualToValue),\n value: createSelector(state => state.value),\n hasSelectedValue: createSelector(state => {\n const {\n value,\n multiple,\n itemToStringValue\n } = state;\n if (value == null) {\n return false;\n }\n if (multiple && Array.isArray(value)) {\n return value.length > 0;\n }\n return stringifyAsValue(value, itemToStringValue) !== '';\n }),\n hasNullItemLabel: createSelector((state, enabled) => {\n return enabled ? hasNullItemLabel(state.items) : false;\n }),\n open: createSelector(state => state.open),\n mounted: createSelector(state => state.mounted),\n forceMount: createSelector(state => state.forceMount),\n transitionStatus: createSelector(state => state.transitionStatus),\n openMethod: createSelector(state => state.openMethod),\n activeIndex: createSelector(state => state.activeIndex),\n selectedIndex: createSelector(state => state.selectedIndex),\n isActive: createSelector((state, index) => state.activeIndex === index),\n isSelected: createSelector((state, index, itemValue) => {\n const comparer = state.isItemEqualToValue;\n const storeValue = state.value;\n if (state.multiple) {\n return Array.isArray(storeValue) && storeValue.some(selectedItem => compareItemEquality(itemValue, selectedItem, comparer));\n }\n\n // `selectedIndex` is only updated after the items mount for the first time,\n // the value check avoids a re-render for the initially selected item.\n if (state.selectedIndex === index && state.selectedIndex !== null) {\n return true;\n }\n return compareItemEquality(itemValue, storeValue, comparer);\n }),\n isSelectedByFocus: createSelector((state, index) => {\n return state.selectedIndex === index;\n }),\n popupProps: createSelector(state => state.popupProps),\n triggerProps: createSelector(state => state.triggerProps),\n triggerElement: createSelector(state => state.triggerElement),\n positionerElement: createSelector(state => state.positionerElement),\n listElement: createSelector(state => state.listElement),\n scrollUpArrowVisible: createSelector(state => state.scrollUpArrowVisible),\n scrollDownArrowVisible: createSelector(state => state.scrollDownArrowVisible),\n hasScrollArrows: createSelector(state => state.hasScrollArrows)\n};"],"names":["selectors","createSelector","state","value","multiple","itemToStringValue","stringifyAsValue","enabled","hasNullItemLabel","index","itemValue","comparer","storeValue","selectedItem","compareItemEquality"],"mappings":";;;AAGY,MAACA,IAAY;AAAA,EACvB,IAAIC,EAAe,CAAAC,MAASA,EAAM,EAAE;AAAA,EACpC,SAASD,EAAe,CAAAC,MAASA,EAAM,OAAO;AAAA,EAC9C,OAAOD,EAAe,CAAAC,MAASA,EAAM,KAAK;AAAA,EAC1C,UAAUD,EAAe,CAAAC,MAASA,EAAM,QAAQ;AAAA,EAChD,OAAOD,EAAe,CAAAC,MAASA,EAAM,KAAK;AAAA,EAC1C,mBAAmBD,EAAe,CAAAC,MAASA,EAAM,iBAAiB;AAAA,EAClE,mBAAmBD,EAAe,CAAAC,MAASA,EAAM,iBAAiB;AAAA,EAClE,oBAAoBD,EAAe,CAAAC,MAASA,EAAM,kBAAkB;AAAA,EACpE,OAAOD,EAAe,CAAAC,MAASA,EAAM,KAAK;AAAA,EAC1C,kBAAkBD,EAAe,CAAAC,MAAS;AACxC,UAAM;AAAA,MACJ,OAAAC;AAAA,MACA,UAAAC;AAAA,MACA,mBAAAC;AAAA,IACN,IAAQH;AACJ,WAAIC,KAAS,OACJ,KAELC,KAAY,MAAM,QAAQD,CAAK,IAC1BA,EAAM,SAAS,IAEjBG,EAAiBH,GAAOE,CAAiB,MAAM;AAAA,EACxD,CAAC;AAAA,EACD,kBAAkBJ,EAAe,CAACC,GAAOK,MAChCA,IAAUC,EAAiBN,EAAM,KAAK,IAAI,EAClD;AAAA,EACD,MAAMD,EAAe,CAAAC,MAASA,EAAM,IAAI;AAAA,EACxC,SAASD,EAAe,CAAAC,MAASA,EAAM,OAAO;AAAA,EAC9C,YAAYD,EAAe,CAAAC,MAASA,EAAM,UAAU;AAAA,EACpD,kBAAkBD,EAAe,CAAAC,MAASA,EAAM,gBAAgB;AAAA,EAChE,YAAYD,EAAe,CAAAC,MAASA,EAAM,UAAU;AAAA,EACpD,aAAaD,EAAe,CAAAC,MAASA,EAAM,WAAW;AAAA,EACtD,eAAeD,EAAe,CAAAC,MAASA,EAAM,aAAa;AAAA,EAC1D,UAAUD,EAAe,CAACC,GAAOO,MAAUP,EAAM,gBAAgBO,CAAK;AAAA,EACtE,YAAYR,EAAe,CAACC,GAAOO,GAAOC,MAAc;AACtD,UAAMC,IAAWT,EAAM,oBACjBU,IAAaV,EAAM;AACzB,WAAIA,EAAM,WACD,MAAM,QAAQU,CAAU,KAAKA,EAAW,KAAK,CAAAC,MAAgBC,EAAoBJ,GAAWG,GAAcF,CAAQ,CAAC,IAKxHT,EAAM,kBAAkBO,KAASP,EAAM,kBAAkB,OACpD,KAEFY,EAAoBJ,GAAWE,GAAYD,CAAQ;AAAA,EAC5D,CAAC;AAAA,EACD,mBAAmBV,EAAe,CAACC,GAAOO,MACjCP,EAAM,kBAAkBO,CAChC;AAAA,EACD,YAAYR,EAAe,CAAAC,MAASA,EAAM,UAAU;AAAA,EACpD,cAAcD,EAAe,CAAAC,MAASA,EAAM,YAAY;AAAA,EACxD,gBAAgBD,EAAe,CAAAC,MAASA,EAAM,cAAc;AAAA,EAC5D,mBAAmBD,EAAe,CAAAC,MAASA,EAAM,iBAAiB;AAAA,EAClE,aAAaD,EAAe,CAAAC,MAASA,EAAM,WAAW;AAAA,EACtD,sBAAsBD,EAAe,CAAAC,MAASA,EAAM,oBAAoB;AAAA,EACxE,wBAAwBD,EAAe,CAAAC,MAASA,EAAM,sBAAsB;AAAA,EAC5E,iBAAiBD,EAAe,CAAAC,MAASA,EAAM,eAAe;AAChE;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index292.js","sources":["../../../node_modules/@base-ui/react/esm/select/portal/SelectPortalContext.js"],"sourcesContent":["'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const SelectPortalContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") SelectPortalContext.displayName = \"SelectPortalContext\";\nexport function useSelectPortalContext() {\n const value = React.useContext(SelectPortalContext);\n if (value === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: <Select.Portal> is missing.' : _formatErrorMessage(58));\n }\n return value;\n}"],"names":["SelectPortalContext","React"],"mappings":";AAIY,MAACA,IAAmC,gBAAAC,EAAM,cAAc,MAAS;AACzE,QAAQ,IAAI,aAAa,iBAAcD,EAAoB,cAAc;","x_google_ignoreList":[0]}
package/dist/index293.js CHANGED
@@ -1,24 +1,82 @@
1
- import * as e from "react";
2
- import { NOOP as r } from "./index286.js";
3
- const t = /* @__PURE__ */ e.createContext({
4
- formRef: {
5
- current: {
6
- fields: /* @__PURE__ */ new Map()
7
- }
8
- },
9
- errors: {},
10
- clearErrors: r,
11
- validationMode: "onSubmit",
12
- submitAttemptedRef: {
13
- current: !1
14
- }
15
- });
16
- process.env.NODE_ENV !== "production" && (t.displayName = "FormContext");
17
- function n() {
18
- return e.useContext(t);
1
+ import * as a from "react";
2
+ import { useRefWithInit as T } from "./index258.js";
3
+ import { useStableCallback as l } from "./index262.js";
4
+ import { useIsoLayoutEffect as f } from "./index261.js";
5
+ import { CompositeListContext as b } from "./index366.js";
6
+ import { j as D } from "./index30.js";
7
+ function k(h) {
8
+ const {
9
+ children: N,
10
+ elementsRef: t,
11
+ labelsRef: o,
12
+ onMapChange: R
13
+ } = h, E = l(R), O = a.useRef(0), d = T(P).current, i = T(L).current, [p, M] = a.useState(0), c = a.useRef(p), C = l((e, u) => {
14
+ i.set(e, u ?? null), c.current += 1, M(c.current);
15
+ }), I = l((e) => {
16
+ i.delete(e), c.current += 1, M(c.current);
17
+ }), r = a.useMemo(() => {
18
+ const e = /* @__PURE__ */ new Map();
19
+ return Array.from(i.keys()).filter((n) => n.isConnected).sort(S).forEach((n, m) => {
20
+ const s = i.get(n) ?? {};
21
+ e.set(n, {
22
+ ...s,
23
+ index: m
24
+ });
25
+ }), e;
26
+ }, [i, p]);
27
+ f(() => {
28
+ if (typeof MutationObserver != "function" || r.size === 0)
29
+ return;
30
+ const e = new MutationObserver((u) => {
31
+ const n = /* @__PURE__ */ new Set(), m = (s) => n.has(s) ? n.delete(s) : n.add(s);
32
+ u.forEach((s) => {
33
+ s.removedNodes.forEach(m), s.addedNodes.forEach(m);
34
+ }), n.size === 0 && (c.current += 1, M(c.current));
35
+ });
36
+ return r.forEach((u, n) => {
37
+ n.parentElement && e.observe(n.parentElement, {
38
+ childList: !0
39
+ });
40
+ }), () => {
41
+ e.disconnect();
42
+ };
43
+ }, [r]), f(() => {
44
+ c.current === p && (t.current.length !== r.size && (t.current.length = r.size), o && o.current.length !== r.size && (o.current.length = r.size), O.current = r.size), E(r);
45
+ }, [E, r, t, o, p]), f(() => () => {
46
+ t.current = [];
47
+ }, [t]), f(() => () => {
48
+ o && (o.current = []);
49
+ }, [o]);
50
+ const g = l((e) => (d.add(e), () => {
51
+ d.delete(e);
52
+ }));
53
+ f(() => {
54
+ d.forEach((e) => e(r));
55
+ }, [d, r]);
56
+ const _ = a.useMemo(() => ({
57
+ register: C,
58
+ unregister: I,
59
+ subscribeMapChange: g,
60
+ elementsRef: t,
61
+ labelsRef: o,
62
+ nextIndexRef: O
63
+ }), [C, I, g, t, o, O]);
64
+ return /* @__PURE__ */ D.jsx(b.Provider, {
65
+ value: _,
66
+ children: N
67
+ });
68
+ }
69
+ function L() {
70
+ return /* @__PURE__ */ new Map();
71
+ }
72
+ function P() {
73
+ return /* @__PURE__ */ new Set();
74
+ }
75
+ function S(h, N) {
76
+ const t = h.compareDocumentPosition(N);
77
+ return t & Node.DOCUMENT_POSITION_FOLLOWING || t & Node.DOCUMENT_POSITION_CONTAINED_BY ? -1 : t & Node.DOCUMENT_POSITION_PRECEDING || t & Node.DOCUMENT_POSITION_CONTAINS ? 1 : 0;
19
78
  }
20
79
  export {
21
- t as FormContext,
22
- n as useFormContext
80
+ k as CompositeList
23
81
  };
24
82
  //# sourceMappingURL=index293.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index293.js","sources":["../../../node_modules/@base-ui/react/esm/internals/form-context/FormContext.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { NOOP } from \"../noop.js\";\nexport const FormContext = /*#__PURE__*/React.createContext({\n formRef: {\n current: {\n fields: new Map()\n }\n },\n errors: {},\n clearErrors: NOOP,\n validationMode: 'onSubmit',\n submitAttemptedRef: {\n current: false\n }\n});\nif (process.env.NODE_ENV !== \"production\") FormContext.displayName = \"FormContext\";\nexport function useFormContext() {\n return React.useContext(FormContext);\n}"],"names":["FormContext","React","NOOP","useFormContext"],"mappings":";;AAIY,MAACA,IAA2B,gBAAAC,EAAM,cAAc;AAAA,EAC1D,SAAS;AAAA,IACP,SAAS;AAAA,MACP,QAAQ,oBAAI,IAAG;AAAA,IACrB;AAAA,EACA;AAAA,EACE,QAAQ,CAAA;AAAA,EACR,aAAaC;AAAA,EACb,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,IAClB,SAAS;AAAA,EACb;AACA,CAAC;AACG,QAAQ,IAAI,aAAa,iBAAcF,EAAY,cAAc;AAC9D,SAASG,IAAiB;AAC/B,SAAOF,EAAM,WAAWD,CAAW;AACrC;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index293.js","sources":["../../../node_modules/@base-ui/react/esm/internals/composite/list/CompositeList.js"],"sourcesContent":["/* eslint-disable no-bitwise */\n'use client';\n\nimport * as React from 'react';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { CompositeListContext } from \"./CompositeListContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Provides context for a list of items in a composite component.\n * @internal\n */\nexport function CompositeList(props) {\n const {\n children,\n elementsRef,\n labelsRef,\n onMapChange: onMapChangeProp\n } = props;\n const onMapChange = useStableCallback(onMapChangeProp);\n const nextIndexRef = React.useRef(0);\n const listeners = useRefWithInit(createListeners).current;\n\n // We use a stable `map` to avoid O(n^2) re-allocation costs for large lists.\n // `mapTick` is our re-render trigger mechanism. We also need to update the\n // elements and label refs, but there's a lot of async work going on and sometimes\n // the effect that handles `onMapChange` gets called after those refs have been\n // filled, and we don't want to lose those values by setting their lengths to `0`.\n // We also need to have them at the proper length because floating-ui uses that\n // information for list navigation.\n\n const map = useRefWithInit(createMap).current;\n // `mapTick` uses a counter rather than objects for low precision-loss risk and better memory efficiency\n const [mapTick, setMapTick] = React.useState(0);\n const lastTickRef = React.useRef(mapTick);\n const register = useStableCallback((node, metadata) => {\n map.set(node, metadata ?? null);\n lastTickRef.current += 1;\n setMapTick(lastTickRef.current);\n });\n const unregister = useStableCallback(node => {\n map.delete(node);\n lastTickRef.current += 1;\n setMapTick(lastTickRef.current);\n });\n const sortedMap = React.useMemo(() => {\n // `mapTick` is the `useMemo` trigger as `map` is stable.\n disableEslintWarning(mapTick);\n const newMap = new Map();\n // Filter out disconnected elements before sorting to avoid inconsistent\n // compareDocumentPosition results when elements are detached from the DOM.\n const sortedNodes = Array.from(map.keys()).filter(node => node.isConnected).sort(sortByDocumentPosition);\n sortedNodes.forEach((node, index) => {\n const metadata = map.get(node) ?? {};\n newMap.set(node, {\n ...metadata,\n index\n });\n });\n return newMap;\n }, [map, mapTick]);\n useIsoLayoutEffect(() => {\n if (typeof MutationObserver !== 'function' || sortedMap.size === 0) {\n return undefined;\n }\n const mutationObserver = new MutationObserver(entries => {\n const diff = new Set();\n const updateDiff = node => diff.has(node) ? diff.delete(node) : diff.add(node);\n entries.forEach(entry => {\n entry.removedNodes.forEach(updateDiff);\n entry.addedNodes.forEach(updateDiff);\n });\n if (diff.size === 0) {\n lastTickRef.current += 1;\n setMapTick(lastTickRef.current);\n }\n });\n sortedMap.forEach((_, node) => {\n if (node.parentElement) {\n mutationObserver.observe(node.parentElement, {\n childList: true\n });\n }\n });\n return () => {\n mutationObserver.disconnect();\n };\n }, [sortedMap]);\n useIsoLayoutEffect(() => {\n const shouldUpdateLengths = lastTickRef.current === mapTick;\n if (shouldUpdateLengths) {\n if (elementsRef.current.length !== sortedMap.size) {\n elementsRef.current.length = sortedMap.size;\n }\n if (labelsRef && labelsRef.current.length !== sortedMap.size) {\n labelsRef.current.length = sortedMap.size;\n }\n nextIndexRef.current = sortedMap.size;\n }\n onMapChange(sortedMap);\n }, [onMapChange, sortedMap, elementsRef, labelsRef, mapTick]);\n useIsoLayoutEffect(() => {\n return () => {\n elementsRef.current = [];\n };\n }, [elementsRef]);\n useIsoLayoutEffect(() => {\n return () => {\n if (labelsRef) {\n labelsRef.current = [];\n }\n };\n }, [labelsRef]);\n const subscribeMapChange = useStableCallback(fn => {\n listeners.add(fn);\n return () => {\n listeners.delete(fn);\n };\n });\n useIsoLayoutEffect(() => {\n listeners.forEach(l => l(sortedMap));\n }, [listeners, sortedMap]);\n const contextValue = React.useMemo(() => ({\n register,\n unregister,\n subscribeMapChange,\n elementsRef,\n labelsRef,\n nextIndexRef\n }), [register, unregister, subscribeMapChange, elementsRef, labelsRef, nextIndexRef]);\n return /*#__PURE__*/_jsx(CompositeListContext.Provider, {\n value: contextValue,\n children: children\n });\n}\nfunction createMap() {\n return new Map();\n}\nfunction createListeners() {\n return new Set();\n}\nfunction sortByDocumentPosition(a, b) {\n const position = a.compareDocumentPosition(b);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return -1;\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n return 1;\n }\n return 0;\n}\nfunction disableEslintWarning(_) {}"],"names":["CompositeList","props","children","elementsRef","labelsRef","onMapChangeProp","onMapChange","useStableCallback","nextIndexRef","React","listeners","useRefWithInit","createListeners","map","createMap","mapTick","setMapTick","lastTickRef","register","node","metadata","unregister","sortedMap","newMap","sortByDocumentPosition","index","useIsoLayoutEffect","mutationObserver","entries","diff","updateDiff","entry","_","subscribeMapChange","fn","l","contextValue","_jsx","CompositeListContext","a","b","position"],"mappings":"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","x_google_ignoreList":[0]}